我试图做一个正则表达式,但不能理解这么好。
我想要的是输入以下内容:
09XYZZZZZZ
其中X是6到9,Y 1到9,Z 0到9.所有在一起,只有12位数字。
谢谢!
答案 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}
答案 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。