请问括号()能否用在方括号中

请问括号()能否用在方括号中

问题描述:视频中第三问,老师的答案是:

var rep = /^www\.\w+\.com(\.cn)?$/;

那么,可不可以把括号用在方括号中:

var rep = /^www\.\w+[(\.com)(\.com.cn)]$/;


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

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

1回答
好帮手慕慕子 2021-10-27 10:45:43

同学你好,不可以在方括号中[]使用括号(),因为写在方括号中的括号不再表示可以整体匹配了,而是当做要匹配的字符( 和 ),示例:

https://img1.sycdn.imooc.com//climg/6178bcc509f58d3d07400170.jpg

所以同学的这种写法也无法完成匹配,示例:

https://img1.sycdn.imooc.com//climg/6178bd1209a5ca9710710433.jpg

建议同学参考视频中讲解正则方式验证是否符合网址规则

祝学习愉快~

  • https://img1.sycdn.imooc.com//climg/61796ec209c62d6c06440392.jpg

    你好,我在2-24视频9:30中看到老师这样举例,他说135开头或者136开头可以这样写,[135|136],请问这样是否验证135或136?按照慕慕子老师的说法:是否是匹配1,3,5,1,3,6?如果视频中是对的话,那我一开始问的问题可否这样写:[\.com|\.com\.cn]


    2021-10-27 23:28:14
  • 同学你好,对于你的问题解答如下:

    1、视频中讲师这里是举例有的可能会验证手机号是不是以135或者136等某些数字开头,简单的写了下伪代码,不是特别的严谨,例如:[135|136]这种写法,如果不指定匹配的位数,那么只会匹配一个字符,即1、3、5、6、| 这些字符中的其中一位字符。如下:

    https://img1.sycdn.imooc.com//climg/617a0b5d097c1c8a10500626.jpg

    2、结合上述分析可知, [\.com|\.com\.cn]这种写法如果不指定匹配的位数,那么也只会匹配一个字符,即:. 、c、o、m、|、n 这几个字符中的一个,如下:

    https://img1.sycdn.imooc.com//climg/617a0d97097f8d6210000648.jpg

    添加指定的位数后,确实可以实现匹配.com或者.com.cn的效果,如下:

    https://img1.sycdn.imooc.com//climg/617a0e1e0995df2309590304.jpg

    但是这种写法匹配规则并不严谨,表示的是匹配. 、c、o、m、|、n 这几个字符中任意的至少四个字符,也就是说,不是.com或者.com.cn,只要满足是这几个字符中任意组合四位及四位以上都可以被匹配到。示例:

    https://img1.sycdn.imooc.com//climg/617a0ee1092e103815310322.jpg

    经过上述几个代码测试及结果可知,[] 用来匹配里面所有符合条件的字符,无法匹配指定的连续多个字符,所以[\.com|\.com\.cn]这种写法无法实现这里的需要匹配效果,推荐同学参考视频的方式实现。

    祝学习愉快~

    2021-10-28 10:52:46
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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