如何在ruby中测试正则表达式的WHOLE字符串?

doc*_*nge 49 ruby regex string

如何对正则表达式的字符串,如果整个字符串匹配(不是子字符串),它将返回true ?

例如:

test( \ee\ , "street" ) #=> returns false
test( \ee\ , "ee" ) #=> returns true!
Run Code Online (Sandbox Code Playgroud)

谢谢.

Tom*_*kas 69

您可以匹配字符串的开头\A和结尾\Z.在红宝石^$比赛也行,分别的开始和结束:

>> "a\na" =~ /^a$/
=> 0
>> "a\na" =~ /\Aa\Z/
=> nil
>> "a\na" =~ /\Aa\na\Z/
=> 0
Run Code Online (Sandbox Code Playgroud)

  • 您希望使用\ z而不是\ Z来匹配整个字符串.`"hi \n"=〜/\Ahi\Z /` (5认同)

小智 19

这似乎对我有用,虽然看起来很丑陋(可能是一种更有吸引力的方式):

!(string =~ /^ee$/).nil?
Run Code Online (Sandbox Code Playgroud)

当然//上面的所有内容都可以是你想要的任何正则表达式.

例:

>> string = "street"
=> "street"
>> !(string =~ /^ee$/).nil?
=> false
>> string = "ee"
=> "ee"
>> !(string =~ /^ee$/).nil?
=> true
Run Code Online (Sandbox Code Playgroud)

注意:使用ruby(1.8.7)和rails(3.1.1)在Rails控制台中测试