我在編寫電話號碼的正則表達式時遇到了一些麻煩。 (不要太在他們偉大尚) 數量可能只包含:0-9,+,/,.,-, ,(,)
我在想:java正則表達式匹配0-9和一些特殊字符
@Pattern(regexp = "(0-9+/\\.\\- \\(\\))?")
但已經抱怨,當我剛進入100
我在編寫電話號碼的正則表達式時遇到了一些麻煩。 (不要太在他們偉大尚) 數量可能只包含:0-9,+,/,.,-, ,(,)
我在想:java正則表達式匹配0-9和一些特殊字符
@Pattern(regexp = "(0-9+/\\.\\- \\(\\))?")
但已經抱怨,當我剛進入100
試試這個正則表達式[0-9\.\-\s+\/()]+
但根據你的解釋,因此我的正則表達式也允許+++
或單個空間或類似的東西,是你想要的嗎?
編輯:所以它可能是更好的使用以下命令:([\.\-\s+\/()]*[0-9][\.\-\s+\/()]*){8,15}
這至少需要8-15號,並允許其他字符之間出現。
您需要通過使用方括號來創建一個字符類。
[0-9+/.()-]+
這意味着一次或多次匹配任何字符的從類內部
(因爲在端部的量詞+
的)但是,這將在匹配這些字符任何命令,例如「.....」會匹配。
你的正則表達式(0-9+/\\.\\- \\(\\))?
的行爲是這樣的:
匹配 「0-」,然後其次是 「/.-()」 花枝招展的序列。由於圍繞括號後的?
,整個模式是可選的,即它也會匹配空字符串。
這將工作國際電話號碼。 – 2012-01-11 10:38:25
@SureshSankar這將匹配任何只包含字符「0-9 + /。\\ - ()」的字符串。所以這將允許很多自由,例如「++++((((」會匹配, – stema 2012-01-11 10:41:54
我想你想"[-0-9+/.()]+"
- 特殊字符內[]
不同的處理,以及處理與-
最好的辦法就是把它先。
或者把它寫成'-'最後 – 2012-01-11 10:31:15
@Pattern(regexp = "^[0-9+/.()-]+$")
正確的模式:^[\d\/\(\)\- \.]+$
通過拆分正則表達式,你可以看到:
^ #Won't match if it doesn't start at the beginning
[ #The character can contain...
\d #digits
\/ #slash
\( #brackets (open)
\) #brackets (close)
\- #hyphen
#space (\s is also possible but can be tab too)
\. #or a dot
]
+ #The character can be repeated
$ #Won't match if it doesn't reach the end
我認爲你不需要在字符類中既不能轉義反斜槓也不能括號括起來 – 2012-01-11 10:56:55
嘛,不是我想要的,但它是我所需要的。我們的網頁設計師太喜歡讓我們的用戶有很大的自由度,並相信他們有意輸入準確的數據。 – 2012-01-11 10:36:01