次の正規表現があります。
^(?:(?:([01]?\d|2[0-3]):)?([0-5]?\d):)?([0-5]?\d)$
これは現在受け入れられる00:00:00
か00:00
、または00
これを行いたくありません。すべてのゼロを受け入れることはでき00:01
ますが、受け入れることはできません。00:00:01
正規表現で見逃したものは何ですか?
これを解決するには、否定先読みを使用できます。
^(?!^(\D|0)*$)(?:(?:([01]?\d|2[0-3]):)?([0-5]?\d):)?([0-5]?\d)$
非数字とゼロに一致する否定先読み。したがって、時間がゼロしかない場合、一致に失敗します。
www.debuggex.comで詳細を確認できます。
あなたが望まないものに一致する別の正規表現を持つ方が簡単かもしれないと思います。
そのようなもの:^(00:?)+$
あなたが望まないものと一致する必要があります。現在の正規表現を使用する前に、そのチェックを使用してください。すべてを 1 つの正規表現で行うと、作成と変更が面倒になる可能性があります。