2

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.

4

2 に答える 2

5

これはあなたが必要とするものでなければなりません:

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

00〜11の範囲を実行するには、「(0の後に0〜9)または(1の後に0または1)」と言う必要があります。これは、範囲内での指定は[]1桁でのみ機能するためです。幸いなことに、あなたのケースは非常に単純です。さもなければ、それを回避するのは非常に複雑になる可能性があります。

于 2012-10-25T14:41:00.947 に答える
1

正規表現は問題ありませんが、1つには、数字の一致が少し複雑です。

(0\d|10|11)

\dゼロの後に数字( )または(|)10または11を続けて一致させたいとします。

角かっこで囲まれたものは、範囲内の1文字だけを表します。[0-5]0から5までの任意の1桁を[a-q]意味し、aからqまでの任意の小文字を意味します。[00-11]一度に複数のキャラクターを操作する必要があるため、そのようなことはありません。

于 2012-10-25T14:42:40.023 に答える