如何通过java正则表达式检查该字符串是否为空白?

Che*_*rry -1 java regex

有正则表达式来查找空字符串,我只想要否定.我也看到了这个问题,但它不适用于java(参见示例).解决方案对我也不起作用(参见示例中的第3行).

例如

Pattern.compile("/^$|\\s+/").matcher(" ").matches() - false
Pattern.compile("/^$|\\s+/").matcher(" a").matches()- false
Pattern.compile("^(?=\\s*\\S).*$").matcher("\t\n a").matches() - false
Run Code Online (Sandbox Code Playgroud)

在两种情况下都返回false.

PS如果有什么不明确的问我问题.

更新

我想在@Pattern注释中使用这个正则表达式而不为它创建自定义注释和编程验证器.这就是为什么我想要一个没有使用find功能的"普通"正则表达式解决方案.

Gen*_*ene 5

否定你的意思并不清楚.

如果您的意思是"包含至少一个非空白字符的字符串",那么您可以使用:

Pattern.compile("\\S").matcher(str).find()
Run Code Online (Sandbox Code Playgroud)

如果真的有必要使用matches,那么你可以用它来做.

Pattern.compile("\\A\\s*\\S.*\\Z").matcher(str).matches()
Run Code Online (Sandbox Code Playgroud)

这只是匹配0或更多空格,后跟非空格,后跟任何字符,直到字符串结尾.

如果你的意思是"一个非空白的字符串,至少有一个这样的字符",那么你可以使用这个:

Pattern.compile("\\A\\S+\\Z").matcher(str).matches()
Run Code Online (Sandbox Code Playgroud)

您需要学习Java正则表达式语法.在Java中,正则表达式从字符串编译,所以没有必要进行特殊的分隔符像/.../或者%r{...}因为你会在其他语言中看到.

  • @Cherry Use `find` instead of `match`. I edited the answer to make this explicit. (2认同)