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