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