我试图创建一个正则表达式,如果String模式包含空格或为空,则返回false。到目前为止我有这个
[^\s]
我认为这将确保字符串不包含空格,但我不确定如何检查以确保它不为空。如果你能帮忙的话,我将不胜感激。
x7rlezfr1#
在我的理解中,你想匹配一个非空的非空字符串,所以最好的答案是相反的。我建议:
(.|\s)*\S(.|\s)*
它匹配任何包含至少一个非空白字符(中间的\S)的字符串。它的前面和后面可以是任何东西,任何字符或空格序列(包括新行):(.|\s)*。您可以在regex101上尝试解释。
\S
(.|\s)*
krugob8w2#
/^$|\s+/如果匹配,则有空白或其为空。
/^$|\s+/
pdsfdshx3#
大多数正则表达式引擎支持“计数器部分”转义序列。也就是说,对于\s(空白),有它的对应部分\S(非空白)。使用这个,你可以检查是否至少有一个非空白字符带有^\S+$。PCRE for PHP has several of these escape sequences .
\s
^\S+$
vshtjzan4#
/^$|\s+/当空格或白色空格时匹配/(?!^$)([^\s])/当它不是空的或白色空格时匹配
/(?!^$)([^\s])/
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 $
dsekswqp6#
有点晚了,但我发现了一个正则表达式,它对空或白色空格返回0个匹配:
/^(?!\s*$).+/
你可以在regex101上测试一下
bogh5gae7#
对于非空且非空的字符串,适当的正则表达式应为
(.|\n)*\S(.|\n)*
这可以防止灾难性的回溯,
具有.和\s,具有重叠匹配。这在regex101上显示,测试字符串甚至只有大约20个空格字符。
.
9rbhqvlz8#
/^[\s]*$/只匹配空字符串和包含空格的字符串
/^[\s]*$/
8条答案
按热度按时间x7rlezfr1#
在我的理解中,你想匹配一个非空的非空字符串,所以最好的答案是相反的。我建议:
它匹配任何包含至少一个非空白字符(中间的
\S
)的字符串。它的前面和后面可以是任何东西,任何字符或空格序列(包括新行):(.|\s)*
。您可以在regex101上尝试解释。
krugob8w2#
/^$|\s+/
如果匹配,则有空白或其为空。pdsfdshx3#
大多数正则表达式引擎支持“计数器部分”转义序列。也就是说,对于
\s
(空白),有它的对应部分\S
(非空白)。使用这个,你可以检查是否至少有一个非空白字符带有
^\S+$
。PCRE for PHP has several of these escape sequences .
vshtjzan4#
/^$|\s+/
当空格或白色空格时匹配/(?!^$)([^\s])/
当它不是空的或白色空格时匹配mpgws1up5#
我最终使用了与公认的答案类似的东西,只做了一些小的修改
Expresso的解释
dsekswqp6#
有点晚了,但我发现了一个正则表达式,它对空或白色空格返回0个匹配:
你可以在regex101上测试一下
bogh5gae7#
对于非空且非空的字符串,适当的正则表达式应为
这可以防止灾难性的回溯,
具有
.
和\s
,具有重叠匹配。这在regex101上显示,测试字符串甚至只有大约20个空格字符。9rbhqvlz8#
/^[\s]*$/
只匹配空字符串和包含空格的字符串