我已经尝试了不同的方法来使特殊字符“ - ”工作,但是当我尝试在代码中测试正则表达式时它似乎不起作用。我尝试的例子是这些
[^(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");
}
它总是抛出给定的异常。没有' - '的所有其他组合似乎都有效。
答案 0 :(得分:2)
连字符在字符类中具有特殊含义。要包含它,请将其作为第一个或最后一个字符放在类中。例如。 [-A-Z]
或[^A-Z-]
。