正则表达式的一系列数字

时间:2013-12-05 23:20:13

标签: javascript jquery regex

我试图做一个正则表达式,但不能理解这么好。

我想要的是输入以下内容:

09XYZZZZZZ

其中X是6到9,Y 1到9,Z 0到9.所有在一起,只有12位数字。

谢谢!

4 个答案:

答案 0 :(得分:2)

解决方案在很大程度上取决于所使用的正则表达式的类型。例如,在Perl正则表达式中,您可以编写:

/09[6-9][1-9][0-9]{6}/

这恰好与字符串09匹配,然后正好与6到9之间的一个数字匹配,然后恰好是1到9之间的一个数字,最后恰好是从0到9的6个数字。

在POSIX正则表达式中,{6}表示法不存在。你必须在那里重复6次。

请注意,您的示例模式只有10位数字,而您的描述显示12位数字。如果您想要最多12位数字,并且最后需要任意数量的Z,您可以使用

/09[6-9][1-9][0-9]+/
在Perl中

/09[6-9][1-9][0-9][0-9]*/
在POSIX中

- 那里不存在+符号。

答案 1 :(得分:1)

09[6-9][1-9][0-9]{8}

Explain regex

答案 2 :(得分:1)

/^09[6-9][1-9][3-9]{6}.{2}$/

这应该做你想要的,假设最后两位数字可以是任何东西,因为你没有指定它们。

打破它:

^匹配字符串的开头

09完全匹配"09"

[6-9]和类似的角色定义范围

[3-9]{6}表示我们希望在3到9之间出现6次

.{2}表示任何事情。

答案 3 :(得分:1)

实际上,POSIX确实有范围,请参阅re_format(7)

常见的是POSIX基本正则表达式:

09[6-9][1-9][0-9]\{6\}

如果十二位正确,请将6调整为8。您可以编写此代码以获得更灵活的数字范围:

09[6-9][1-9][0-9]\{6,8\}

有时候,你有POSIX ERE:

09[6-9][1-9][0-9]{6}

POSIX ERE支持+与PCRE一样,BRE不支持,但您可以使用\{6,\}进行开放式结束。 POSIX正则表达式不像PCRE(参见Dominik的答案),需要分隔符作为正则表达式的一部分。

有关Perl正则表达式的perlre(1)perlretut(1),请参阅哪些PCRE 兼容。

如果你想知道,PHP现在使用PCRE。