为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁星coding 2019-03-14 18:13:05
/^(18[0-9]{9})|(15[0-9]{9})$/ 这条正则为什么能匹配 18444444444444444444,我对这条正则的理解是 以 18 或 15 开头后接9位 0-9 的数字。注:我知道手机号码的正则有其他的写法,只是想弄懂为什么这条可以匹配的原因。
查看完整描述

5 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

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

这个表达式相当于:

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

是因为 ^ 和 $ 的优先级比 | 高,所以 ^ 先与 18[0-9]{9} 匹配了


查看完整回答
反对 回复 2019-03-26
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

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


查看完整回答
反对 回复 2019-03-26
?
大话西游666

TA贡献1817条经验 获得超14个赞

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

查看完整回答
反对 回复 2019-03-26
?
米脂

TA贡献1836条经验 获得超3个赞

/^(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})$/就符合你要的手机匹配


查看完整回答
反对 回复 2019-03-26
  • 5 回答
  • 0 关注
  • 958 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信