搜索正则表达式模式以查找"禁止"字符

s3l*_*lph 1 java regex newline regex-negation

我已经google了很多,但我找不到任何解决方案.对于学校项目,我需要在字符串中找到不受支持的字符不受支持的字符.允许的是[A-Z\s].

我发现Pattern.match()只检查整个字符串是否与模式匹配.所以我尝试了这种模式:.*[^A-Z\\s].*

只要您在字符串中没有任何换行符,它就会起作用.为了检查它们,我也常常[.\\s]*[^A-Z\\s][.\\s]*处理它们,但现在没有任何工作了.

为此目的,正确的正则表达式是什么?

fge*_*fge 5

或者:

  • 只是颠倒比赛,
  • 或者反转字符类并尝试仅查找一个字符:

[绕过SO bug - 不能在列表项后面引用代码]

final Pattern p = Pattern.compile("[^A-Z\\s]");
if (p.matcher(input).find())
    // illegal input, bark
Run Code Online (Sandbox Code Playgroud)

是的,.matches()被错误命名... Java中的真正正则表达式匹配是使用完成的.find().