正则表达式:如果字符串包含空格,则不匹配

我似乎无法找出匹配字符串的正则表达式模式,只要它不包含空格。 例如

"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*$/)