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

时间:2010-02-10 12:20:34

标签: ruby regex string

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

例如:

test( \ee\ , "street" ) #=> returns false
test( \ee\ , "ee" ) #=> returns true!

谢谢。

3 个答案:

答案 0 :(得分:70)

您可以将字符串的开头与\A匹配,将结尾与\Z匹配。在ruby中^$分别匹配行的开头和结尾:

>> "a\na" =~ /^a$/
=> 0
>> "a\na" =~ /\Aa\Z/
=> nil
>> "a\na" =~ /\Aa\na\Z/
=> 0

答案 1 :(得分:16)

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

!(string =~ /^ee$/).nil?

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

示例:

>> string = "street"
=> "street"
>> !(string =~ /^ee$/).nil?
=> false
>> string = "ee"
=> "ee"
>> !(string =~ /^ee$/).nil?
=> true

注意:使用ruby(1.8.7)和rails(3.1.1)

在Rails控制台中进行测试

答案 2 :(得分:3)

那么,你问的是如何测试这两个字符串是否相等,对吧?只是使用字符串相等!这通过了你和Tomas引用的每一个例子:

'ee'   == 'street' # => false
'ee'   == 'ee'     # => true
"a\na" == 'a'      # => false
"a\na" == "a\na"   # => true