一系列数字的正则表达式
Regular expression for a range of numbers
我试图做一个正则表达式,但不能很好地理解。
我想要的是输入以下内容:
09XYZZZZZZ
其中X是从6到9,Y是从1到9,Z是从0到9。加在一起,只有12位数的长度。
谢谢!
解决方案在很大程度上取决于所用正则表达式的类型。例如,在Perl正则表达式中,您可以编写:
/09[6-9][1-9][0-9]{6}/
这与字符串09完全匹配,然后是从6到9的一位数字,然后是1到9的1位数字,最后是从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中-那里不存在+
表示法。
09[6-9][1-9][0-9]{8}
解释正则表达式
/^09[6-9][1-9][3-9]{6}.{2}$/
这应该是你想要的,假设最后两个数字可以是任何数字,因为你没有指定它们。
分解:
^
匹配字符串的开头
09
与"09"
完全匹配
[6-9]
和类似的定义字符的范围
[3-9]{6}
说我们希望在3到9次之间出现6次
.{2}
的意思是任何事物中的2。
实际上,POSIX确实有范围,请参阅re_format(7)。
常见的是POSIX基本正则表达式:
09[6-9][1-9][0-9]'{6'}
如果12位数字正确,则调整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,以备不时之需。
- 正则表达式与数字中的第二个点匹配
- 正好包含2个大写字母和3个数字的正则表达式
- 键按下上的正则表达式 仅限制数字
- 使用正则表达式匹配长度为六个字符的字母数字字符串
- 为什么这个正则表达式不't匹配最后一个字母数字字符
- 正则表达式(JavaScript),用于创建数字必须大于x的数据验证
- 用于删除紧跟在非数字后面的零的正则表达式
- XXXXXX的正则表达式.XX格式的数字
- javascript正则表达式,用于匹配带数字和不带数字的字符串
- Javascript中的正则表达式,用于只有数字的字符串,并且不应在除数字以外的任何位置包含任何字符
- JavaScript正则表达式(带_-的字母数字字符)
- 用于数字输入的正则表达式
- 用Javascript正则表达式过滤十六进制数字
- 我应该使用什么正则表达式来验证数字模式
- 用于获取两个方括号之间的数字的正则表达式
- 正则表达式删除最后一个数字之后的字符串
- Javascript 正则表达式在特定单词或数字之后拆分
- 正则表达式 jquery 将数字替换为链接
- 正则表达式允许字母数字和空格,但不允许连续两个空格
- 正则表达式,字符串末尾必须包含数字