Javascript - 在正则表达式中匹配连字符

时间:2012-10-25 14:38:19

标签: javascript regex

我正在尝试使用正则表达式匹配一个字符串(我是其中的新手)但是我无法匹配它。

这些应该被接受:

  • GT-00-TRE
  • KK-10-HUH
  • JU-05-OPR

这些不应该:

  • HTH-00-AS
  • HM-99-ASD
  • NM-05-AK

因此模式为2个字母,连字符,2位数字(00和11之间),连字符,3个字母。

到目前为止,我能想到的最好的是:

var thePattern = /^[a-z]{2}[-][00-11][-][a-z]{3}$/gi;

我情不自禁地觉得我很亲密。

任何人都可以给我任何指示吗?

感谢。

2 个答案:

答案 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]这样的东西,因为它一次需要处理多个角色。