我已经用谷歌搜索了很多,但我找不到任何解决方案。对于学校项目,我需要在字符串中找到不受支持的字符 unsupported chars。允许的是[A-Z\s]
。
我发现Pattern.match()
只检查整个字符串是否与模式匹配。所以我尝试了这种模式:.*[^A-Z\\s].*
只要字符串中没有任何换行符,它就可以工作。为了检查它们,我曾经[.\\s]*[^A-Z\\s][.\\s]*
也处理过它们,但现在没有任何效果了。
为此目的,正确的正则表达式是什么?
我已经用谷歌搜索了很多,但我找不到任何解决方案。对于学校项目,我需要在字符串中找到不受支持的字符 unsupported chars。允许的是[A-Z\s]
。
我发现Pattern.match()
只检查整个字符串是否与模式匹配。所以我尝试了这种模式:.*[^A-Z\\s].*
只要字符串中没有任何换行符,它就可以工作。为了检查它们,我曾经[.\\s]*[^A-Z\\s][.\\s]*
也处理过它们,但现在没有任何效果了。
为此目的,正确的正则表达式是什么?
任何一个:
[绕过 SO 错误 - 无法在列表项之后立即引用代码]
final Pattern p = Pattern.compile("[^A-Z\\s]");
if (p.matcher(input).find())
// illegal input, bark
是的,.matches()
命名错误... Java 中的真正正则表达式匹配是使用.find()
.
试试"(?s).*[^A-Z\\s].*"
它打开dotall模式。在 dotall 模式下,表达式.
匹配任何字符,包括行终止符。默认情况下,此表达式不匹配行终止符。请参阅 Pattern.API for (?idmsuxU-idmsuxU)