我似乎无法找出匹配字符串的正则表达式模式,只要它不包含空格。例如
"this has whitespace".match(/some_pattern/)
应该返回nil
但
"nowhitespace".match(/some_pattern/)
应该使用整个字符串返回MatchData。任何人都可以建议上述解决方案吗?
答案 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*$/)