0

Amraによる時間検証の質問を確認した

必要に応じて正規表現を作成しました

var re = /^\s*([01]?\d|1[0-2]):?([00,30]\d)\s*$/;

私の意図は、1時間と30分のインターバル時間のみを許可することです

例: "12:00"、"01:00"、"12:30"、"01:30" など

この正規表現はほとんど機能します。「01:10」の場合は false を返しますが、「01:01」....「01.09」と入力すると値を返します。false である必要があります。

私を助けてください

そして、この正規表現を詳しく説明してください..

4

2 に答える 2

1

[00,30]あなたが思っていることをしません。[]正規表現のグループは文字クラス[a-z]です。たとえば、文字列「az」ではなく、単一の小文字に一致するなど、一致できる文字のセットです。

代わりにこれを試してください:

var re = /^\s*(0?\d|1[0-2]):?(00|30)\s*$/;

(00|30)00or のいずれかに一致し、それ以外には一致30しません -|正規表現の「or」演算子です。

于 2012-06-12T07:32:56.857 に答える
0

24時間制にしたい場合は、Amberの回答を次のように少し変更できます。

/^\s*([0-1]?\d|2[0-3]):?(00|30)\s*$/
于 2012-06-19T08:51:16.820 に答える