我想要0000.0000-9999.9999或0000-9999或0000:0000-9999:9999的正则表达式。
可能是:/^(\d{4}$\.\d{4}$)|(\d{4}$)|(\d{4}$\:\d{4}$)/
?答案 0 :(得分:4)
你正在寻找这个
^\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}$)
。
答案 1 :(得分:1)
$
标记了^
标记其开头的行尾,因此/^(\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)
答案 2 :(得分:0)
这应该这样做。
/[0-9]{4}((\.|-|:)?[0-9]{0|4})?/