/^(18[0-9]{9})|(15[0-9]{9})$/ 正则匹配的问题

/^(18[0-9]{9})|(15[0-9]{9})$/ 这条正则为什么能匹配 18444444444444444444,我对这条正则的理解是 以 18 或 15 开头后接9位 0-9 的数字

注:我知道手机号码的正则有其他的写法,只是想弄懂为什么这条可以匹配的原因。


繁星coding
浏览 959回答 5
5回答

慕的地8271018

/^(18[0-9]{9})|(15[0-9]{9})$/这个表达式相当于:/(^18[0-9]{9})|(15[0-9]{9}$)/是因为 ^ 和 $ 的优先级比 | 高,所以 ^ 先与 18[0-9]{9} 匹配了

30秒到达战场

/^(18[0-9]{9})$|^(15[0-9]{9})$/

大话西游666

因为前面11位已经匹配成功你这条表达试不能匹配15开头的

米脂

/^(18[0-9]{9})|(15[0-9]{9})$/首先你要明白你写的这条正则代表什么意思:^(18[0-9]{9})或者(15[0-9]{9})$就匹配翻译过来就是:(18和9个十进制数开头)或者(15和9个十进制结尾)就匹配然后你给的数据是这样的:18444444444444444444既然是或语句,这符合18和9个十进制数开头所以自然就匹配啦可以改成这样/^(18[0-9]{9})$|^(15[0-9]{9})$/就符合你要的手机匹配
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript