【问题标题】:Getting illegal character range in regex :java在正则表达式中获取非法字符范围:java
【发布时间】:2013-04-13 14:56:34
【问题描述】:

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

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

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

我哪里不明白?

【问题讨论】:

  • 你为什么用++而不是+

标签: java regex escaping string-matching


【解决方案1】:

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

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

可行的方法:

"[ ',-]"

"[',\\- ]"

【讨论】:

  • 那么范围应该如何...我只想允许撇号、连字符、逗号或空格
  • 如果你想要一个空格,就用一个空格。如果你把连字符放在最后,你不需要转义它:[ ',-]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-01
  • 2019-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多