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

时间:2010-01-07 04:10:33

标签: ruby regex

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

"this has whitespace".match(/some_pattern/)

应该返回nil

"nowhitespace".match(/some_pattern/)

应该使用整个字符串返回MatchData。任何人都可以建议上述解决方案吗?

7 个答案:

答案 0 :(得分:21)

在Ruby中,我认为它将是

/^\S*$/

这意味着“开始,匹配任意数量的非空白字符,结束”

答案 1 :(得分:4)

你总是可以在中搜索空格,然后否定结果:

"str".match(/\s/).nil?

答案 2 :(得分:3)

>> "this has whitespace".match(/^\S*$/)
=> nil
>> "nospaces".match(/^\S*$/)
=> #<MatchData "nospaces">

^ =字符串的开头

\ S =非空白字符,* = 0或更多

$ =字符串结尾

答案 3 :(得分:3)

不确定是否可以在一种模式中执行此操作,但您可以执行以下操作:

"string".match(/pattern/) unless "string".match(/\s/)

答案 4 :(得分:1)

   "nowhitespace".match(/^[^\s]*$/)

答案 5 :(得分:1)

你想:

/^\S*$/

说“匹配字符串的开头,然后匹配零个或多个非空白字符,然后匹配字符串的结尾。”预定义字符类的约定是小写字母表示类,而大写字母表示其否定。因此,\s表示空格字符,而\S表示非空格字符。

答案 6 :(得分:0)

str.match(/^\S*some_pattern\S*$/)