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

标签 java regex validation

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

[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;
}

但是,当尝试运行此程序时,我收到以下消息:

Illegal character range near index 25 [!@#$%&*()_+=|<>?{}[]~-,] ^

只有在我添加逗号后才会发生。我还尝试了表达式 [!@#$%&*()_+=|<>?{}[]~-\,] (转义逗号),但无济于事。我想知道如何正确使用正则表达式来利用上面的方法排除逗号。

提前致谢。

最佳答案

转义其前面的连字符。只要您在其后添加另一个字符(逗号),它就会被解释为定义字符范围。

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

关于尝试排除逗号时,Java RegEx 模式无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18618932/

相关文章:

validation - Grails 4 hasone无法正确验证

java - 玩!框架 - 处理 POST 请求

java - Jetty 将 HTTP 重定向到 HTTPS 在 IDE 外部失败

javascript - Javascript RegExp 可以不区分大小写吗?

javascript - 从数字字符串中删除千位分隔符的正则表达式?

asp.net - 如何清除 ASP.NET 中的验证?

ruby - ActiveRecord验证: based on attribute or function

java - "Invalid credentials"Google plus with request/plus/v1/people/me

java - slf4j 记录器不打印完整的包名称

python - 在文本中的特定位置插入字符串