2012-01-11 75 views

回答

3

試試這個正則表達式[0-9\.\-\s+\/()]+

但根據你的解釋,因此我的正則表達式也允許+++或單個空間或類似的東西,是你想要的嗎?

編輯:所以它可能是更好的使用以下命令:([\.\-\s+\/()]*[0-9][\.\-\s+\/()]*){8,15}

這至少需要8-15號,並允許其他字符之間出現。

+0

嘛,不是我想要的,但它是我所需要的。我們的網頁設計師太喜歡讓我們的用戶有很大的自由度,並相信他們有意輸入準確的數據。 – 2012-01-11 10:36:01

0

您需要通過使用方括號來創建一個字符類。

[0-9+/.()-]+ 

參見this expression on Regexr

這意味着一次或多次匹配任何字符的從類內部

(因爲在端部的量詞+的)但是,這將在匹配這些字符任何命令,例如「.....」會匹配。

你的正則表達式(0-9+/\\.\\- \\(\\))?的行爲是這樣的:

匹配 「0-」,然後其次是 「/.-()」 花枝招展的序列。由於圍繞括號後的?,整個模式是可選的,即它也會匹配空字符串。

your expression on Regexr

+0

這將工作國際電話號碼。 – 2012-01-11 10:38:25

+0

@SureshSankar這將匹配任何只包含字符「0-9 + /。\\ - ()」的字符串。所以這將允許很多自由,例如「++++((((」會匹配, – stema 2012-01-11 10:41:54

0

我想你想"[-0-9+/.()]+" - 特殊字符內[]不同的處理,以及處理與-最好的辦法就是把它先。

+0

或者把它寫成'-'最後 – 2012-01-11 10:31:15

0
@Pattern(regexp = "^[0-9+/.()-]+$") 
0

正確的模式:^[\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 
+0

我認爲你不需要在字符類中既不能轉義反斜槓也不能括號括起來 – 2012-01-11 10:56:55

相關問題