我有以下的正則表達式:正則表達式檢查時間
^(?:(?:([01]?\d|2[0-3]):)?([0-5]?\d):)?([0-5]?\d)$
目前這將接受00:00:00
或00:00
或00
我不希望它這樣做。 它可以接受00:01
或00:00:01
但不是全爲零。
我有什麼在正則表達式錯過了什麼?
我有以下的正則表達式:正則表達式檢查時間
^(?:(?:([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。
完美!謝謝! – Pindo 2013-04-05 06:54:30
我認爲可能會更容易有另一個正則表達式,它會匹配不管你不想要什麼。
事情是這樣:^(00:?)+$
應該與你不想要的東西。在使用當前的正則表達式之前,只需使用該檢查。在一個正則表達式中做所有事情可能會造成混亂,無法進行構建和更改。
試試這個略有修改的變體: '?(?:(?:[01]?\ d | 2 [0-3])):(?:[0-5]?\ d)(?:: [0-5]?\ d)?$' – Dfr 2013-04-05 07:01:03