2013-02-12 59 views
3

我想檢查一個字段是否是一個有效的時間值(只是秒)。所以我想接受從0到59的數字。我拿出這個:對00-59(秒)之間的數字的javascript正則表達式

[0-5][0-9]? 

幾乎沒有工作。但不包括數字7-8-9 ......它的工作原理,如果用戶的數字07,但我不希望強制用戶數字的第0位。所以,我想是這樣的:

([0-5][0-9]? | [0-9]) 

但這不起作用,併產生了太多遞歸調用的錯誤。

有什麼想法?

+2

它是否必須是一個正則表達式? – PeeHaa 2013-02-12 19:25:22

+1

不要以爲你需要?在第二個表達式中,因爲您已經在第二個可選部分中涵蓋了這種情況。 – 2013-02-12 19:26:06

+3

老實說,我只是將這個值解析爲一個基數爲10的數字,並將它與'0'和'59'進行比較。一個正則表達式在這裏看起來過分了。 – 2013-02-12 19:26:13

回答

6

在你的第二個正則表達式,你需要從第一部分除去?,使的它[1-5]代替[0-5]

[0-9]|[1-5][0-9] 

如果你想有足夠的靈活性,允許雙方707,然後使用[0-5]

[0-9]|[0-5][0-9] 

然後,簡化了上述正則表達式,你可以使用:

[0-5]?[0-9] // ? makes [0-5] part optional 
+1

不會[0-9] | [0-5] [0-9]更好。 – 2013-02-12 19:26:13

+0

@Armin。我以爲OP不想進入'07'。 – 2013-02-12 19:26:47

+0

@Mercurybullet。補充說。 – 2013-02-12 19:29:05

1

這應該是足夠了:[0-5]?\d

但是,如果要強制執行兩個數字(即。 0102 ......),你應該只使用[0-5]\d

0

如果你想十位數可選,而不是單元的位置,放置?有:

[0-5]?[0-9] 
+0

十年?你什麼意思? – 2013-02-12 19:30:01

+1

@Juan,從技術上講,[十年](http://www.thefreedictionary.com/decade)可以表示「十人小組」,不僅是「十年的時期」(這也是法語的翻譯* ,意思是「十人小組」)。在這種情況下,Bergi指的是十秒鐘的小組。 – 2013-02-12 19:36:01

+0

@Juan:右邊第二位數字。可能這是一個錯誤或不尋常的翻譯,不知道是否有更好的表達 – Bergi 2013-02-12 19:36:51

0

如果你想在0是可選,請將?改爲在[0-5]之後。

[0-5]?[0-9]應該這樣做。

+0

無法把6,7,8,9在這種情況下。 – 2017-08-01 20:16:07

相關問題