regex 正则表达式表示非空和非空白

anauzrmj  于 2023-10-22  发布在  其他
关注(0)|答案(8)|浏览(122)

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

[^\s]

我认为这将确保字符串不包含空格,但我不确定如何检查以确保它不为空。如果你能帮忙的话,我将不胜感激。

x7rlezfr

x7rlezfr1#

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

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

它匹配任何包含至少一个非空白字符(中间的\S)的字符串。它的前面和后面可以是任何东西,任何字符或空格序列(包括新行):(.|\s)*
您可以在regex101上尝试解释。

krugob8w

krugob8w2#

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

pdsfdshx

pdsfdshx3#

大多数正则表达式引擎支持“计数器部分”转义序列。也就是说,对于\s(空白),有它的对应部分\S(非空白)。
使用这个,你可以检查是否至少有一个非空白字符带有^\S+$
PCRE for PHP has several of these escape sequences .

vshtjzan

vshtjzan4#

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

mpgws1up

mpgws1up5#

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

(^$)|(\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 $
dsekswqp

dsekswqp6#

有点晚了,但我发现了一个正则表达式,它对空或白色空格返回0个匹配:

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

你可以在regex101上测试一下

bogh5gae

bogh5gae7#

对于非空且非空的字符串,适当的正则表达式应为

(.|\n)*\S(.|\n)*

这可以防止灾难性的回溯,

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

具有.\s,具有重叠匹配。这在regex101上显示,测试字符串甚至只有大约20个空格字符。

9rbhqvlz

9rbhqvlz8#

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

相关问题