正则表达式:如果字符串包含空格,则不匹配
我似乎无法找出匹配字符串的正则表达式模式,只要它不包含空格。 例如
"this has whitespace".match(/some_pattern/)
应该返回nil
但是
"nowhitespace".match(/some_pattern/)
应该使用整个字符串返回MatchData。 有谁能建议上面的解决方案?
在Ruby中我认为会是
/^\S*$/
这意味着“开始,匹配任意数量的非空白字符,结束”
你总是可以搜索空格,然后否定结果:
"str".match(/\s/).nil?
>> "this has whitespace".match(/^\S*$/) => nil >> "nospaces".match(/^\S*$/) => #
^
=字符串的开头
\ S =非空白字符, *
= 0或更多
$
=字符串结尾
不确定你能在一种模式中做到这一点,但你可以这样做:
"string".match(/pattern/) unless "string".match(/\s/)
"nowhitespace".match(/^[^\s]*$/)
你要:
/^\S*$/
这表示“匹配字符串的开头,然后匹配零个或多个非空格字符,然后匹配字符串的结尾。” 预定义字符类的约定是小写字母表示类,而大写字母表示其否定。 因此, \s
引用空白字符,而\S
引用非空白字符。
str.match(/^\S*some_pattern\S*$/)