![](/img/trans.png)
[英]Regular expression to check for string between special characters in java
[英]Regular expression to check allowed characters not working in Java
我有以下方法來檢查允許的字符:
private boolean checkIfAllCharsAreValid(String test) {
boolean valid = false;
if (test.matches("^[a-zA-Z0-9,.;:-_'\\s]+$")) {
valid = true;
}
return valid;
}
但是如果test有字符-
在匹配中返回false。 我必須逃避-
?
在[
... ]
里面-
符號是專門處理的。 (你在表達式的開頭用你的az
這個特殊目的自己使用它。)
你需要逃避-
角色
[a-zA-Z0-9,.;:\-_'\s]
^
或者把它放在[...]
表達式中的最后(或第一個)
[a-zA-Z0-9,.;:_'\s-]
^
進一步說明:
從技術上講,所有字符在空字符串中都有效,所以我會在表達式中從+
更改為*
。
String.matches
檢查完整的字符串,因此^
和$
是多余的。
你的整個方法可以被視為
return test.matches("[a-zA-Z0-9,.;:_'\\\\s-]*");
A -
在兩側包圍的字符類中是用於表示范圍的正則表達式元字符。
要列出一個文字-
在char類中,你在char類中轉義-
:
if (test.matches("^[a-zA-Z0-9,.;:\\-_'\\s]+$"))
^^^
或者把-
放在char類的末尾:
if (test.matches("^[a-zA-Z0-9,.;:_'\\s-]+$"))
^
或者把-
放在char類的開頭:
if (test.matches("^[-a-zA-Z0-9,.;:_'\\s]+$"))
^
您可以將-
放在字符組的開頭,以便它不會被解釋為字符范圍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.