关于正则中的 |

关于正则中的 |

/^[1-9|a-z]{6,20}$/

如题,请问老师这个|是或的意思吗?是只能用在[]内么?这个正则匹配的是什么呢?

和两个竖线的 || 有啥区别呢? 

正在回答

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

2回答

你好同学,你理解的是对的。这里是老师说的有问题,很感谢同学指出,以后老师答疑的时候会更加细心一点,给大家带来更好的答疑服务。[1-9|a-z]和[1-9a-z]区别就是第一个多了一个匹配的可选项,即字符竖杠(|)。

如果不加[],表示或,即匹配竖杠左边的内容或者是右边的内容。如下:

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

如上匹配green或者是red。

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

如果加上[] , 就作为一个字符进行匹配了:

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

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

祝学习愉快,望采纳。

  • 慕神9465694 提问者 #1
    好吧!我看很多老师关于这个的回答都错了,不知道是不是直接粘贴的代码。希望老师们用心改善吧!谢谢!麻烦老师了
    2019-10-16 11:46:13
好帮手慕夭夭 2019-10-16 09:38:07

你好同学,解答如下:

1 . 是或的意思,不是只在[]用,正则的其他地方也可以用。

2. 它本身是不进行匹配。[1-9|a-z]意思就是匹配1-9 或者是a-z。

3. 区别: 

 || 是js中的逻辑或操作符,在js表达式中使用, 例如 a || b ,是一个表达式,如果第一个操作数是false,会返回第二个表达式。(这个是前面的课程讲过的,规则老师就不多说了哦)

| 也是表示或 ,记住它是正则表达式中使用的就行。 例如 /green|red/  ,匹配green或者 red。

祝学习愉快,望采纳。

  • 提问者 慕神9465694 #1
    那老师请问[1-9|a-z]和[1-9a-z]的匹配区别呢?
    2019-10-16 10:14:17
  • 提问者 慕神9465694 #2
    []中括号是表示字符类吧?那括号里面的 | 不应该是表示匹配 | 这个字符吗? 我尝试了一下: var a="abc123|"; c=/[a-z|0-9]+/; console.log(c.exec(a)); 这个正则把字符串中的 | 也匹配到了,如果是或的意思最后的 | 不应该被匹配到吧? 不知道是不是我理解错了..
    2019-10-16 10:22:26
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

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

帮助反馈 APP下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

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