我需要驗證給定字符串是否包含最多12位數字和恰好一個破折號。使用正則表達式驗證包含破折號的數字12位字符串
初始正則表達式:^[0-9]*-?[0-9]*$
改性正則表達式:^([0-9]*-?[0-9]*){1,12}$
實施例(應爲有效):12356978-9
的問題是,第一正則表達式不驗證長度,而第二個不起作用。
注:一切都必須在正則表達式來完成,使用string.length減()不檢查長度
我需要驗證給定字符串是否包含最多12位數字和恰好一個破折號。使用正則表達式驗證包含破折號的數字12位字符串
初始正則表達式:^[0-9]*-?[0-9]*$
改性正則表達式:^([0-9]*-?[0-9]*){1,12}$
實施例(應爲有效):12356978-9
的問題是,第一正則表達式不驗證長度,而第二個不起作用。
注:一切都必須在正則表達式來完成,使用string.length減()不檢查長度
醜陋的方式:
^([0-9]-[0-9]{1,11}|[0-9]{2}-[0-9]{1,10}|[0-9]{3}-[0-9]{1,9}| ...)$
利用先行,結合兩個條件:
^(?=\\d*-\\d*$)(?=.{1,13}$).*$
第二個應該是被接受的答案。如果可以的話,我會再次嘗試+1,但是我已經做了:( –
如果你可以使用正則表達式之外額外條件:
String s = ... ;
return s.length()<=13 && s.matches("^\\d+-\\d+$");
如果一個破折號可以開始或結束的字符串,可以使用以下命令:
String s = ... ;
return s.length()<=13 && s.matches("^\\d*-\\d*$");
任何有關如何在純正則表達式中實現的想法? – MYGz
是的,你可以實現@JiriTousek的解決方案,它不是很可讀,但會完成這項工作。這並不意味着沒有解決方案,只是如果有的話,除了吉日圖斯克之外,我不知道它。 –
如果你舉一些例子說明這將是很好你想與之比較的字符串。 –
破折號後只有一位數字嗎? – Ravikumar
123465789-10有效,123456789-1011因爲長度無效,123465789因爲沒有破折號而無效 –