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

时间:2013-08-21 12:04:42

标签: java regex

finding blank string有正则表达式,我只想要否定。我也看到this question但它不适用于java(参见示例)。 Solution也不适合我(参见示例中的第3行)。

例如

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

在两种情况下都返回false。

P.S。如果不清楚,请向我提问。

已更新

我想在@Pattern注释中使用此正则表达式,而不为其创建自定义注释和编程验证器。这就是为什么我需要一个“普通”的正则表达式解决方案而不使用find函数。

3 个答案:

答案 0 :(得分:5)

否定你的意思并不清楚。

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

Pattern.compile("\\S").matcher(str).find()

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

Pattern.compile("\\A\\s*\\S.*\\Z").matcher(str).matches()

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

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

Pattern.compile("\\A\\S+\\Z").matcher(str).matches()

您需要学习Java regex syntax。在Java中,正则表达式是从字符串编译的,因此不需要像/.../%r{...}这样的特殊分隔符,就像在其他语言中看到的那样。

答案 1 :(得分:1)

这个怎么样:

if(!string.trim().isEmpty()) {
    // do something
}

答案 2 :(得分:0)

使用regex \s:空格字符:\t\n\x0B\f\r

Pattern.compile("\\s")