我有以下方法来检查允许的字符:
private boolean checkIfAllCharsAreValid(String test) {
boolean valid = false;
if (test.matches("^[a-zA-Z0-9,.;:-_'\\s]+$")) {
valid = true;
}
return valid;
}
Run Code Online (Sandbox Code Playgroud)
但如果test中包含该字符-,则匹配返回false.我必须逃脱-吗?
aio*_*obe 10
里面[... ]的-符号进行特殊处理.(你在表达的开头用你自己的这个特殊目的a-z.)
你需要逃避-角色
[a-zA-Z0-9,.;:\-_'\s]
^
Run Code Online (Sandbox Code Playgroud)
或者把它放在[...]表达式中的最后(或第一个)
[a-zA-Z0-9,.;:_'\s-]
^
Run Code Online (Sandbox Code Playgroud)
进一步说明:
从技术上讲,所有字符在空字符串中都是有效的,所以我会在表达式中更改+为*.
String.matches检查满弦,所以^和$是多余的.
你的整个方法可以被视为
return test.matches("[a-zA-Z0-9,.;:_'\\s-]*");
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
23682 次 |
| 最近记录: |