Regex 用于非空和非空白的正则表达式

Regex 用于非空和非空白的正则表达式,regex,whitespace,Regex,Whitespace,我试图创建一个正则表达式,如果字符串模式包含空格或为空,它将返回false。到目前为止,我有这个 [^\s] 我认为这将确保字符串不包含空格,但我不确定如何检查以确保它不是空的。任何帮助都将不胜感激。大多数正则表达式引擎支持“计数器部分”转义序列。也就是说,对于\s(空白)有它的计数器部分\s(非空白) 使用此选项,您可以检查是否至少有一个带有^\S+$的非空白字符 PCRE for PHP。/^$|\s+/如果匹配,则有空格或其空。/^[\s]*$/匹配空字符串和仅包含空格的字符串。我最终

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

[^\s] 

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

大多数正则表达式引擎支持“计数器部分”转义序列。也就是说,对于
\s
(空白)有它的计数器部分
\s
(非空白)

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


PCRE for PHP。

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

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

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

(^$)|(\s+$)
委员会的解释

从2个备选方案中选择(^$) [1] 一个编号的俘虏团体^$ 行首^ 行尾$ [2] 已编号的捕获组(\s+$) 空白,一个或多个重复\s+ 行尾$
根据我的理解,您希望匹配一个非空字符串和非空字符串,因此顶部的答案正好相反。我建议:

(.|\s)*\S(.|\s)*
这将匹配至少包含一个非空白字符的任何字符串(中间的
\S
)。它的前后可以是任何字符或空格序列(包括新行):
(.|\s)*


您可以尝试打开解释。

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

/^(?!\s*$).+/
您可以在

/^$|\s+/
这与空白或空白相匹配

/(?!^$)([^\s])/


当它不是空的或空白时匹配,这不是媒体要求的。您可以删除那里的方括号
/^\s*$/
将执行相同的任务。@Narendra:是的,但问题是在某个地方找到包含空格字符的字符串,而不仅仅是由空格字符组成。@TimPietzcker我明白了。然后,
/^$|\s/
就如您上面所指出的那样更有意义了。但是我不确定OP为什么会使用正则表达式来实现这个目的,因为
String
方法,比如
str.length==0 | | str.contains(“”
),在这种情况下会更方便。@Narendra:“为什么使用正则表达式?”这个问题可能是评论中最常被问到的问题之一,所以:)正确。+是不需要的。只是不要在那里放一个*。)在某些语言中(例如Ruby),
^
$
表示行的开头或结尾,而不是字符串。但有趣的是,即使在这种情况下,表达式也能正常工作。@skalee有一个PCRE修饰符“m”,用于切换多行support@Jan是的,但即使没有此修饰符,此regexp也将正常工作,因为/^$/将匹配空字符串或多行字符串中的空行。空行=>某处有换行符=>空格。你怎么颠倒这个?如果字符串不是空白或空,我希望它匹配正则表达式是好的,但是解释有点误导。正则表达式匹配的字符串完全由非空白字符组成,长度至少为一个字符。因此,它不仅仅是“检查是否至少有一个非空白字符”。为什么要投否决票?正则表达式正在解决OP的问题-如果匹配,字符串就不是空的,也不包含空格。这是我的问题。我只是做了
str.match(/\S+/)
我测试了这个正则表达式以满足OP的请求。它允许空字符串。他们还想排除空字符串。您可以使用
str.length()==0 | | | str.contains(“”)
。@NarendraYadala,这在选项卡和其他选项卡上不匹配。您可能还想将这些标记为非捕获组:
(?:^$)|(?:\s+$)
在尝试了我为这个问题找到的所有不同答案之后,这个对我有用!我也不明白为什么这不是最好的答案。这完全符合OP问题的要求。几年后,是时候回答这个问题了。这样做更容易、更短,而且条件是积极的。以积极的方式而不是消极的方式来描述你的情况是一种很好的做法。请注意,正则表达式不返回任何内容。因此,如果你吹毛求疵,RE应该返回
false
的要求是无法实现的。。
/^(?!\s*$).+/