取双引号以外的内容为什么要去掉>

取双引号以外的内容为什么要去掉>

var str='<input type="text" value=">" name="username"/>';
	    	var pattern=/<([^"'>]|"[^"]*"|'[^']*')*>/g;
	    	console.log(str.match(pattern));


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

4回答
好帮手慕言 2019-09-06 10:47:19

同学你好,是引号外的尖括号。后面的两个匹配的是引号里的内容。可以看下方的例子(在value后面加了一个>)

http://img1.sycdn.imooc.com//climg/5d71c8470001c06f08680127.jpg

打印结果:

http://img1.sycdn.imooc.com//climg/5d71c86b0001ab6303600129.jpg

这样写不是一个正确的完整的标签,在匹配到value后面的>就停止了,后面就不会匹配了。

如果帮助到了你,欢迎采纳~祝学习愉快~

好帮手慕言 2019-09-05 18:48:29

同学你好,

1、因为>也是双引号之外的内容呀。

2、老师表达的意思是后面是有匹配>括号的。

http://img1.sycdn.imooc.com//climg/5d70e51a00017e6d08380127.jpg

3、?:代表非捕获分组。[^"'>]是除了尖括号,单引号、双引号都可以。

["']是匹配双引号或者单引号。

[^"']中的^是取反,即匹配非双引号或者单引号的内容,这样就可以匹配单引号或者双引号里面的内容。

*的意思是匹配前面的子表达式零次或多次, 等价于{0,}。

\1是引用第一个分组,即前面用小括号包裹的内容。所以后面又匹配一个双引号或者单引号。

(["'])[^"']*\1就是匹配了一对双引号或者单引号以及它里面的内容。

这块确实比较绕,建议同学多听几遍,多动手练习。

如果帮助到了你,欢迎采纳~祝学习愉快~

  • 提问者 慕言_7946275 #1
    [^"'>]中> 是指的 value=">" 这个里面的尖括号吗
    2019-09-05 20:37:56
提问者 慕言_7946275 2019-09-05 18:32:20
老师,,可以把反向思考这个一起仔细解释下吗,,我看着看着就懵了,有种不认识正则的感觉了
var str='<input type="text" value=">" name="username"/>';
	    	var pattern=/<(?:[^"'>]|(["'])[^"']*\1)*>/g;
	    	console.log(str.match(pattern));


提问者 慕言_7946275 2019-09-05 18:00:35

补充下,,看到有老师回复别的同学的

                  你好,正则中是有匹配最后面尖括号的哦:

                   所以第一个表达式中就不需要进行匹配了。

按照老师的意思那不是应该也不需要匹配开始的左尖括号了吗  < 


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师