Regex-不包含空格的匹配字符串

Regex-不包含空格的匹配字符串,regex,Regex,我正在寻找一个正则表达式,如果字符串不包含空格,它将返回true。到目前为止,我的尝试是^[^\s]*$,但它无法识别包含多个单词的字符串 我想澄清的是,我正在尝试匹配一个不仅仅包含空格的字符串 测试用例: 'apple' true 'apple banana' true 'apple banana orange' true ' apple banana' true ' apple banana' true ' '

我正在寻找一个正则表达式,如果字符串不包含空格,它将返回true。到目前为止,我的尝试是
^[^\s]*$
,但它无法识别包含多个单词的字符串

我想澄清的是,我正在尝试匹配一个不仅仅包含空格的字符串

测试用例:

'apple'                true
'apple banana'         true
'apple banana orange'  true
' apple banana'        true
'  apple banana'       true
' '                    false
'  '                   false
'   '                  false

你可能会很好地相处:

^(?!\s+$).+
看。
分解后,这表示:

^         # start of the line / string
(?!\s+$)  # neg. lookahead, making sure there are not only whitespaces
.+        # at least one character, possibly more
  • 使用
    \S
    匹配非空格字符
  • 在非空格前后允许空格
例如:

^\s*\S.*$

对非空间使用前瞻:

^(?=.*\S).*

look aheads的好处是,您可以将它们堆叠起来,以合并不相关的断言,这些断言可能很难作为一个直接的正则表达式来编写。例如,假设我们想要添加一个断言,即没有数字:

^(?=.*\S)(?!.*\d).*

把它写成一个简单的正则表达式是很尴尬的,而且它的可读性和正则表达式一样好——外观和主正则表达式是分开的。

最简单的正则表达式是:

\S
它将匹配任何包含非空白字符的字符串