该方法应该只允许在回文中使用字母、空格、逗号、点、冒号、分号、问号、感叹号、连字符、单引号和双引号。如果存在任何其他字符,则文本不能是回文
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,.:;?!'"-]+");
}