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