2

mm-dd-(2012〜2099)の日付形式を検証しようとしています。

次の正規表現があります。

^(0[1-9]|1[0-2])-(0[1-9]|[10-31])-(20[12-99])$

次のコードを実行すると、falseになります。この正規表現の何が問題になっていますか?

var reg = new RegExp("^(0[1-9]|1[0-2])-(0[1-9]|[10-31])-(20[12-99])$")
reg.test("05-33-2012")**

年の部分を取り出して「05-33」をテストすると動作します。

4

1 に答える 1

4

オリが言ったように、[12-99]はあなたが思っていることをしません。

具体的には、は数字ではなく文字-の範囲を指します。だから一致します...[12-99]

1
2-9
9

この式20(1[2-9]|[2-9][0-9])は、2012年から2099年の日付で機能します

于 2012-06-20T18:20:51.443 に答える