问题
I have a simple regex pattern that verifies names. But When I run it I get illegal character range error. I thought by escaping "\s" it will allow a space but the compiler is still complaining.
public boolean verifyName(String name) {
String namePattern = "^[\\p{L}]++(?:[',-\\s][\\p{L}]++)*+\\.?$";
return name.matches(namePattern);
}
and this is the error that i think shouldn't be occurring since a name might contain anny of these [',-\\s]
so where am i not understanding?
回答1:
You can't have a range "from ,
to whitespace". Perhaps you meant to escape -
?
\s
is not a space, it's [ \t\r\n\v\f]
(space, tab, carriage return, newline, vertical tab or a form feed).
Things that will work:
"[ ',-]"
"[',\\- ]"
来源:https://stackoverflow.com/questions/16117762/getting-illegal-character-range-in-regex-java