在正则表达式中获取非法字符范围:java

Obb*_*bby 1 java regex escaping string-matching

我有一个简单的正则表达式模式来验证名称.但是当我运行它时,我会得到非法的字符范围错误.我想通过转义"\ s"它会允许一个空间,但编译器仍在抱怨.

public boolean verifyName(String name) {
    String namePattern = "^[\\p{L}]++(?:[',-\\s][\\p{L}]++)*+\\.?$";
    return name.matches(namePattern);
}
Run Code Online (Sandbox Code Playgroud)

这是我认为不应该发生的错误,因为名称可能包含这些错误 [',-\\s]

那我在哪里不明白?

Pav*_*sov 8

你不能拥有"从空间,到空白" 的范围.也许你打算逃脱-

\s它不是空格,它是[ \t\r\n\v\f](空格,制表符,回车符,换行符,垂直制表符或换页符).

可行的事情:

"[ ',-]"

"[',\\- ]"
Run Code Online (Sandbox Code Playgroud)