我正在尝试使用正则表达式匹配一个字符串(我是其中的新手)但是我无法匹配它。
这些应该被接受:
这些不应该:
因此模式为2个字母,连字符,2位数字(00和11之间),连字符,3个字母。
到目前为止,我能想到的最好的是:
var thePattern = /^[a-z]{2}[-][00-11][-][a-z]{3}$/gi;
我情不自禁地觉得我很亲密。
任何人都可以给我任何指示吗?
感谢。
答案 0 :(得分:5)
这应该是你需要的:
var thePattern = /^[a-z]{2}[-](0\d|1[0-1])[-][a-z]{3}$/gi;
为了进行00-11的范围,你必须说“(0后跟0-9)或(1后跟0或1)”。这是因为在[]
范围内指定范围仅适用于单个数字。幸运的是,你的情况非常简单,否则解决这个问题可能会非常复杂。
答案 1 :(得分:1)
你的正则表达式没问题,但一方面:数字匹配有点复杂
(0\d|10|11)
你想匹配一个零,然后是一个数字(\d
)OR(|
)一个十或一十一。
方括号中的某些内容仅代表范围中的单个字符。 [0-5]
表示0到5之间的任何单个数字,[a-q]
表示从a到q的任何小写字母。没有[00-11]
这样的东西,因为它一次需要处理多个角色。