我有一個數字和分隔符的字符串。 這些數字可以用comma
或hyphen
分開。但可能永遠不會有兩個數字,它們之間用逗號分隔,而沒有逗號。如何使用正則表達式驗證破折號分隔值?
例子:
有效:123,12,2,1-3,1,1-3,1
無效:123,12,2,1-3,1,1-3-5,1
我有一個正則表達式,幾乎工程,但它不檢測這些1-3-5
無效線路。
如何改進以下內容?
^([0-9])+((,|-)[0-9]+)*$
我有一個數字和分隔符的字符串。 這些數字可以用comma
或hyphen
分開。但可能永遠不會有兩個數字,它們之間用逗號分隔,而沒有逗號。如何使用正則表達式驗證破折號分隔值?
例子:
有效:123,12,2,1-3,1,1-3,1
無效:123,12,2,1-3,1,1-3-5,1
我有一個正則表達式,幾乎工程,但它不檢測這些1-3-5
無效線路。
如何改進以下內容?
^([0-9])+((,|-)[0-9]+)*$
你可以分解你的輸入:
正常情況下的正則表達式可以寫爲\d+(?:-\d+)?
;對於特殊情況,這只是,
。
運用normal* (special normal*)*
模式,並添加錨和量詞,我們有:
^\d+(?:-\d+)?(,\d+(?:-\d+)?)*$
可以使用環視這將搜索-digits-
讓你的正則表達式可以像添加條件:
^(?!.*-\\d+-)[0-9]+([,-][0-9]+)*$
^^^^^^^^^^^^-negative look-ahead, match will fail if there is any -digits- in your string
它不工作http://regex101.com/r/gO7yT8/2 – 2014-10-31 22:44:23
@ alphabravo使用'\ d'而不是'\\ d'。在Java中,'''''也需要在String中轉義,所以我這樣寫了。 – Pshemo 2014-10-31 22:47:51
我明白了,你還必須添加'^'錨。 – 2014-10-31 22:50:07