Java正则表达式只允许特定的字符



该方法应该只允许在回文中使用字母、空格、逗号、点、冒号、分号、问号、感叹号、连字符、单引号和双引号。如果存在任何其他字符,则文本不能是回文

if(userInput.matches("\d.*[^a-zåäöA-ZÅÄÖ .,;:?!-'"]+")) {
return false;

所以我一直试图使它,所以输入只允许字母和这些特定的特殊字符,但我似乎没有得到它的工作。例如,现在它允许#和$,尽管我没有在正则表达式中列出它们。

匹配为:1位数字,任意字符,一个或多个不... .

Mind!-'是一个范围,意思是!"#$%&'。将减号改为末尾的... -]

(顺便说一句,我不明白代码的意图)


您似乎想找到一个非合法字符返回false。您可以通过在负组[^...]中列出合法字符来实现。

if (userInput.matches("(?s).*[^a-zåäöA-ZÅÄÖ .,;:?!'"-].*")) {
return false;
}

命令(?s)将使.也匹配像n这样的换行符。

在一个不合法的字符中发现一个可以失败。

这不会解决回文问题,但它会检查字符串是否包含非法字符

private boolean checkIllegalChars(String testString) {
return testString.matches("[^\w\s,.:;?!'"-]+");
}

最新更新