我想正則表達式爲0000.0000-9999.9999或0000-9999或0000:0000-9999:9999。正則表達式爲9999.9999或9999或9999:9999
是不是:/^(\d{4}$\.\d{4}$)|(\d{4}$)|(\d{4}$\:\d{4}$)/
?
請指導
我想正則表達式爲0000.0000-9999.9999或0000-9999或0000:0000-9999:9999。正則表達式爲9999.9999或9999或9999:9999
是不是:/^(\d{4}$\.\d{4}$)|(\d{4}$)|(\d{4}$\:\d{4}$)/
?
請指導
$
標誌着像^
這樣的行結束標誌着它的開始,所以/^(\d{4}$\.\d{4}$)|(\d{4}$)|(\d{4}$\:\d{4}$)/
是錯誤的。
我會嘗試:
/^(\d{4}\.\d{4})|(\d{4})|(\d{4}\:\d{4})$/
代替。
您也可以使第二部分可選,並允許.
和:
如果存在:
/^\d{4}([\.:]\d{4})?$/
(我更一個Perl的正則表達式的人,但它應該對JavaScript以及工作)
@ MayP:提供的表達式在JavaScript中完美無瑕。順便說一句,沒有必要逃避字符組內的'.'。 – 2011-06-10 10:55:29
@MayP:AFAIK它應該與JavaScript一起工作。我現在無法測試它。 – 2011-06-10 10:55:41
@Felix:謝謝,我認爲'''是如此,但保留了'''''只是爲了安全起見:-) – 2011-06-10 10:56:14
這應該這樣做。
/[0-9]{4}((\.|-|:)?[0-9]{0|4})?/
這將允許'0000:'或'0000:0',不是嗎? – 2011-06-10 10:44:53
你正在尋找這一個
^\d{4}(?:([.:])\d{4})?(?:-\d{4}(?:\1\d{4})?)?$
說明
^ # start-of-string \d{4} # four digits (?: # non-capturing group ([.:]) # delimiter char (store in group 1) \d{4} # four digits )? # end group, make optional (?: # non-capturing group - # a dash \d{4} # four digits (?:\1\d{4})? # whatever group 1 was plus four digits (optional) )? # end group, make optional $ # end-of-string
它仍然允許0000-9999.9999
。您可以通過評估匹配成功後的字符串長度來檢查此特殊情況(即,必須是4,9或19)。
或者,你可以在(?=.{4}$|.{9}$|.{19}$)
之前加上正則表達式。
我不想讓「 - 」和任何其他字符也 – MayureshP 2011-06-10 10:41:13