正则表达式不是空的而不是空白

时间:2011-11-01 13:20:32

标签: regex whitespace

我正在尝试创建一个正则表达式,如果String模式包含空格或为空,则返回false。到目前为止我有这个

[^\s] 

我认为这将确保字符串不包含空格,但我不确定如何检查以确保它不是空的。任何帮助将不胜感激。

7 个答案:

答案 0 :(得分:37)

/^$|\s+/如果匹配,则为空格或为空。

答案 1 :(得分:14)

大多数正则表达式引擎支持"计数器部分"逃逸序列。也就是说,对于\s(空格),其对应部分\S(非空格)。

使用此功能,您可以检查是否至少有一个带有^\S+$的非空白字符。

PCRE for PHP has several of these escape sequences

答案 2 :(得分:12)

在我的理解中,你想要匹配一个非空白和非空字符串,所以最好的答案是相反的。我建议:

(.|\s)*\S(.|\s)*

- 这匹配任何包含至少一个非空白字符(中间为\S)的字符串。它可以在任何内容之前和之后,任何字符或空格序列(包括新行) - (.|\s)*

您可以在https://regex101.com/上解释一下。

答案 3 :(得分:5)

我最终使用了与接受的答案类似的东西,只做了一些修改

(^$)|(\s+$)

Expresso

的解释
Select from 2 alternatives (^$)
    [1] A numbered captured group ^$
        Beginning of line ^
        End of line $
    [2] A numbered captured group (\s+$)
        Whitespace, one or more repetitions \s+
        End of line $

答案 4 :(得分:1)

有点晚了,但这是我发现的一个正则表达式,它返回0个匹配空白或空白的匹配项:

/^(?!\s*$).+/

您可以在regex101

进行测试

答案 5 :(得分:0)

/^$|\s+/ 当空白或空白时匹配

/(?!^$)([^\s])/ 当它不是空白或空格时会匹配

答案 6 :(得分:-1)

/^[\s]*$/匹配空字符串和仅包含空格的字符串