简体   繁体   中英

Javascript - Matching a hyphen in regex

I'm trying to match a string using regex (of which I am new to) but I can't get it to match.

These should be accepted:

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

These should not:

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

So the pattern goes 2 letters, hyphen, 2 digits (between 00 and 11 inclusive), hyphen, 3 letters.

So far the best I can come up with is:

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

I can't help but feel that I'm pretty close.

Can anyone give me any pointers?

Thanks.

This should be what you need:

var thePattern = /^[a-z]{2}[-](0\d|1[0-1])[-][a-z]{3}$/gi;

In order to do a range 00-11, you have to say "(0 followed by 0-9) or (1 followed by 0 or 1)". This is because specifying a range within [] only works for single digits. Luckily your case is pretty simple, otherwise it could get quite complex to work around that.

Your regex is OK, but for one thing: the digits matching is a bit more complex

(0\d|10|11)

you want to match a zero followed by a digit ( \\d ) OR ( | ) a ten OR a eleven.

Something in square brackets represents just a single character in a range. [0-5] means any single digit between 0 and 5, [aq] means any lowercase letter from a to q. There's no such thing as [00-11] because it would require to work on more than one character at a time.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM