1

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

^(?:(?:([01]?\d|2[0-3]):)?([0-5]?\d):)?([0-5]?\d)$

これは現在受け入れられる00:00:0000:00、または00 これを行いたくありません。すべてのゼロを受け入れることはでき00:01ますが、受け入れることはできません。00:00:01

正規表現で見逃したものは何ですか?

4

2 に答える 2

3

これを解決するには、否定先読みを使用できます。

^(?!^(\D|0)*$)(?:(?:([01]?\d|2[0-3]):)?([0-5]?\d):)?([0-5]?\d)$

非数字とゼロに一致する否定先読み。したがって、時間がゼロしかない場合、一致に失敗します。

www.debuggex.comで詳細を確認できます。

于 2013-04-05T06:38:29.313 に答える
0

あなたが望まないものに一致する別の正規表現を持つ方が簡単かもしれないと思います。

そのようなもの:^(00:?)+$あなたが望まないものと一致する必要があります。現在の正規表現を使用する前に、そのチェックを使用してください。すべてを 1 つの正規表現で行うと、作成と変更が面倒になる可能性があります。

于 2013-04-05T06:38:45.310 に答える