Подтвердить что ты не робот

Как проверить строку WHOLE на регулярное выражение в ruby?

Как строка с регулярным выражением, чтобы она возвращала значение true, если строка целое соответствует (а не подстроке)?

например:

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

Спасибо.

4b9b3361

Ответ 1

Вы можете совместить начало строки с \A, а конец - с \Z. В ruby ​​^ и $ соответствуют также начало и конец строки:

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

Ответ 2

Кажется, это работает для меня, хотя он выглядит уродливым (возможно, более привлекательным способом это можно сделать):

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

Конечно, все внутри//выше может быть любым регулярным выражением, которое вы хотите.

Пример:

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

Примечание. Протестировано в консоли Rails с рубином (1.8.7) и рельсами (3.1.1)

Ответ 3

Итак, что вы спрашиваете, как проверить, равны ли две строки, правильно? Просто используйте равенство строк! Это проходит каждый один из примеров, которые цитировали вас и Томас:

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