与特定数字组匹配的精确长度的正则表达式

时间:2014-10-22 15:14:36

标签: regex

我正在构建一个与以下数字组匹配的正则表达式:

10xxxxxxx 
1116xxxxx 
143xxxxxx
146xxxxxx 
149xxxxxx
159xxxxxx
16xxxxxxx

(注意长度总是9)

其中x是任何数字。我最好的尝试产生了这个:

/^1[01456][1369]*[6]*[0-9]$/

但是,我不能将字符串的长度始终为9.任何想法?

编辑:也许我不够清楚,它需要匹配这7个案例,而且只需要那些,包含和排他性。

4 个答案:

答案 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)

Demo


首先使用锚定在字符串末尾的正向前瞻查看字符串的开头,正好是9位数字。然后我们会查找字符串可以从中开始的7个特定数字组。

答案 3 :(得分:0)

您可以使用此正则表达式:

/^1[01456][1369][0-9]{6}$/

由于前3个模式1[01456][1369]已匹配3个数字,因此最后一个必须与6个字符匹配才能强制执行9位数输入。