我有一个简单的正则表达式模式来验证名称。但是当我运行它时,我会得到非法的字符范围错误。我想通过转义“\ s”它会允许一个空格,但编译器仍在抱怨。
public boolean verifyName(String name) {
String namePattern = "^[\\p{L}]++(?:[',-\\s][\\p{L}]++)*+\\.?$";
return name.matches(namePattern);
}
这是我认为不应该发生的错误,因为名称可能包含这些[',-\\s]
中的一个
所以我不理解哪里?
答案 0 :(得分:8)
您不能拥有“从,
到空白”的范围。也许你打算逃避-
?
\s
不是空格,而是[ \t\r\n\v\f]
(空格,制表符,回车符,换行符,垂直制表符或换页符)。
可行的事情:
"[ ',-]"
"[',\\- ]"