需要允許用戶只輸入數字或字母或空格或連字符或上述任意組合。正則表達式僅允許使用數字,字母,空格和連字符 - Java
和我嘗試以下
String regex = "/^[0-9A-Za-z\s\-]+$/";
sampleString.matches(regex);
,但它不能正常工作。請有人幫我解決請。
需要允許用戶只輸入數字或字母或空格或連字符或上述任意組合。正則表達式僅允許使用數字,字母,空格和連字符 - Java
和我嘗試以下
String regex = "/^[0-9A-Za-z\s\-]+$/";
sampleString.matches(regex);
,但它不能正常工作。請有人幫我解決請。
問題:你的正則表達式試圖在開始和結束時
在java中有前後正則表達式所以用不用的/
,java!=javascript
"^[0-9A-Za-z\\s-]+$"
^[0-9A-Za-z\\s-]+$
匹配/
符號: ^
開始比賽
[0-9A-Za-z\\s-]+
:一個或多個字母,數字,空格和-
$
:比賽
感謝您的答案,順便說一句,我沒有投票你的答案:)我從來沒有這樣做過。 – SAR
@SAR我很高興,我可以幫助,我永遠不會這麼做:) –
sidenote:請注意回答和評論之間的時間範圍 –
您是接近,但需要做出兩個改變的結束。 第一個是雙逃逸(即使用\\而不是\)。這是由於Java的怪異(請參見Javadoc for the Pattern class中的「反斜槓,轉義和引用」一節)。第二件事是刪除顯式引用到字符串的開始和結尾。這在使用matches()時會被隱含。所以,正確的Java代碼
String regex = "[0-9A-Za-z\\s\\-]+";
sampleString.matches(regex);
雖然這會工作,你也可以替換\ d的「0-9」的參考和下降的轉義「 - 」。這給你
String regex = "[\\dA-Za-z\\s-]+";
不是downvoter,但沒有必要逃避' - ',嘗試它,但如果你downvoted,因爲downvoter認爲這是一個錯字,那麼請原諒我說它是由符號構成的正則表達式,很多帖子只會是拼寫錯誤 –
你是對的。我打字速度很快,並將我的答案基於原始海報的正則表達式。我的壞:)對於這個問題,如果清理,那麼0-9可以被\\ d替換。 –
你可以隨時編輯你的答案,繼續 –
Java不使用'/ regex/flags'語法。刪除''/''。 – Pshemo