为什么不加‘+’不可以 ?为null

为什么不加‘+’不可以 ?为null

var str = '<p class="odd" id="odd">123</p>';
   var pattern = /<[^>]>/g
   console.log(str.match(pattern));

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

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

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

3回答
好帮手慕慕子 2019-09-23 09:53:27

同学你好, /是捕获的内容,返回的是开始匹配到内容的最后一个字符。

标签<>里面开始匹配的是引号之外的内容:

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

捕获的分组就是最后一个/ 。

可以测试验证一下,修改正则,只匹配引号的内容,将右侧>去掉,如下:

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

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

捕获的是最后的等号。

自己测试理解下,祝学习愉快

好帮手慕慕子 2019-09-19 09:56:12

同学你好, 

  1. 因为+表示匹配一次或多次。 不加+只匹配[]中的一个字符, 所以/<[^>]>/g这种写法无法匹配到,返回null

  2. 测试代码打印的结果如下,因为正则使用了“|”, 表示或者的意思, 所以匹配的内容, /是捕获的内容,返回的是开始匹配到内容的最后一个字符。’

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

同学可以在测试一下哦

如果帮助到了你, 欢迎采纳!

祝学习愉快~~~~

  • 提问者 原来是晓琪_ #1
    第二个分组为什么返回“/”我不明白
    2019-09-21 08:40:42
提问者 原来是晓琪_ 2019-09-18 19:58:41

    q 2:

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

分组为什么返回的是“/”  而不是 ‘ input type="text" value=">" name="username"/’呢?

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

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

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

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

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

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

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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