尝试排除逗号时,Java RegEx模式无效

时间:2013-09-04 16:13:56

标签: java regex validation username

我正在构建一个验证用户名的函数,在这种情况下我只想接受字母字符。我将提供的用户输入与此正则表达式进行匹配:

[1-9!@#$%&*()_+=|<>?{}\\[\\]~-,]

这是使用正则表达式的方法:

public static String purgeInvalidLogin(String failedLogin, String pattern) {
    Pattern special = Pattern.compile (pattern);
    String purgedLogin = failedLogin.replaceAll(special.pattern(), ""); // remove any special characters before moving on
    purgedLogin = StringUtils.deleteWhitespace(purgedLogin);
    return purgedLogin;
}

然而,在尝试运行时,我收到此消息:

  

指数25附近的非法字符范围[!@#$%&amp; *()_ + = |&lt;&gt;?{} []〜 - ,] ^

只有在我添加逗号后才会发生。我也尝试过表达式[!@#$%&amp; *()_ + = |&lt;&gt;?{} []〜 - \,](转义逗号)无济于事。我想知道如何正确使用正则表达式来排除使用上述方法的逗号。

提前致谢。

2 个答案:

答案 0 :(得分:2)

在它之前逃脱连字符。只要在其后添加另一个字符(逗号),它就会被解释为定义一系列字符。

[1-9!@#$%&*()_+=|<>?{}\\[\\]~\\-,]

答案 1 :(得分:0)

您只想接受alpha字符,并且您通过列出每个可能的非法字符来执行此操作。我认为你已经倒退了,最好是寻找你想要的东西(这将是一个更短的正则表达式)并标记非匹配。