我正在构建一个与以下数字组匹配的正则表达式:
10xxxxxxx
1116xxxxx
143xxxxxx
146xxxxxx
149xxxxxx
159xxxxxx
16xxxxxxx
(注意长度总是9)
其中x是任何数字。我最好的尝试产生了这个:
/^1[01456][1369]*[6]*[0-9]$/
但是,我不能将字符串的长度始终为9.任何想法?
编辑:也许我不够清楚,它需要匹配这7个案例,而且只需要那些,包含和排他性。
答案 0 :(得分:3)
怎么样:
^1(?:[06]\d{2}|116|4[369]\d|59\d)\d{5}$
答案 1 :(得分:1)
使用此模式
^1[01456](16|3\d|6\d|9\d|\d\d)\d{5}$
答案 2 :(得分:1)
这是你想要的吗?
^(?=[0-9]{9}$)(?:10|1116|143|146|149|159|16)
首先使用锚定在字符串末尾的正向前瞻查看字符串的开头,正好是9位数字。然后我们会查找字符串可以从中开始的7个特定数字组。
答案 3 :(得分:0)
您可以使用此正则表达式:
/^1[01456][1369][0-9]{6}$/
由于前3个模式1
,[01456]
和[1369]
已匹配3个数字,因此最后一个必须与6个字符匹配才能强制执行9位数输入。