连字符似乎在Java

时间:2017-06-29 06:35:31

标签: java regex

我已经尝试了不同的方法来使特殊字符“ - ”工作,但是当我尝试在代码中测试正则表达式时它似乎不起作用。我尝试的例子是这些

[^(a-zA-Z0-9\\\\@#$%!.'{}_-~`())]

上面的一个不起作用,因为它搜索'_'到'〜'之间的字符。然后我尝试了

[^(a-zA-Z0-9\\\\@#$%!.'{}_~`()\\-)]
[^(a-zA-Z0-9-\\\\@#$%!.'{}_~`())]
[^(a-zA-Z0-9\\-\\\\@#$%!.'{}_~`())]

如果我在字符串中输入' - '进行搜索,上述内容似乎都无法正常工作。当我尝试在regex tester online中进行测试时,上述表达式有效。

EXTERNAL_USER_INVALID_PATTERN = "[^(a-zA-Z0-9\\\\@#$%!.'{}_~`()\\-)]"
Pattern p = Pattern.compile(X.EXTERNAL_USER_INVALID_PATTERN);
if(p.matcher(objectName).find() || objectName.length()> X.EXTERNAL_USER_MAXLENGTH){
    throw new BusinessException("The group name does not conform to specification");
}

它总是抛出给定的异常。没有' - '的所有其他组合似乎都有效。

1 个答案:

答案 0 :(得分:2)

连字符在字符类中具有特殊含义。要包含它,请将其作为第一个或最后一个字符放在类中。例如。 [-A-Z][^A-Z-]