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