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

时间:2013-04-20 07:13:45

标签: java regex escaping string-matching

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

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

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

所以我不理解哪里?

1 个答案:

答案 0 :(得分:8)

您不能拥有“从,到空白”的范围。也许你打算逃避-

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

可行的事情:

"[ ',-]"

"[',\\- ]"