我有以下方法来检查允许的字符:
private boolean checkIfAllCharsAreValid(String test) { boolean valid = false; if (test.matches("^[a-zA-Z0-9,.;:-_'\\s]+$")) { valid = true; } return valid; }
但是如果test有字符 – 在匹配中返回false.我必须逃避 – ?
解决方法
在[…]里面 – 符号是专门处理的. (你在表达式的开头用你的a-z就可以自己使用它.)
你需要逃避 – 角色
[a-zA-Z0-9,.;:\-_'\s] ^
或者把它放在[…]表达式中的最后(或第一个)
[a-zA-Z0-9,.;:_'\s-] ^
进一步说明:
>从技术上讲,所有字符在空字符串中都有效,所以我会在表达式中从*更改为*.
> String.matches检查完整字符串,因此^和$是多余的.
>你的整个方法可以被视为
return test.matches("[a-zA-Z0-9,.;:_'\\s-]*");