2013-04-07 2 views
1

Перед рубин 2.0, регулярное выражение работает так:рубин 2,0 регулярное выражение и кириллица

/\A[a-zа-я\d]+\z/i   =~ 'привет' # => 0 
/\A[a-z\p{Cyrillic}\d]+\z/i =~ 'привет' # => 0 

Я обновленный рубин 2.0, и у него есть ошибка:

/\A[a-zа-я\d]+\z/i   =~ 'привет' # => nil 
/\A[a-z\p{Cyrillic}\d]+\z/i =~ 'привет' # => nil 

Как я могу справиться с этой проблемой? Без \d в классе символов, он работает правильно:

/\A[a-zа-я]+\z/i   =~ 'привет' # => 0 
+0

На моей коробке (Ubuntu/Ruby2/RoR3) 'regex =/\ A [a-zа-я \ d] + \ z/i; regex = ~ 'привет'' дает '0', как и ожидалось. Вы считаете, что проверяете окружающую среду? – mudasobwa

+1

@mudasobwa Вы подтвердили, что используете 'ruby 2.0', у меня те же результаты, что и у OP на' 2.0'. – fmendez

+0

@fmendez Я запускал 'ruby-head'. Я признаю, что есть проблемы в '* -review [1,2]', наконец. – mudasobwa

ответ

1

Исправлена ​​ошибка, кажется, фиксируется в ruby-head:

⮀ rvm use ruby-2.0.0-preview2 
Using /home/am/.rvm/gems/ruby-2.0.0-preview2 
⮀ irb 
2.0.0dev :001 > regex = /\A[a-zа-я\d]+\z/i ; regex =~ 'привет' 
# ⇒ nil 
⮀ rvm use ruby-2.0.0-preview1 
Using /home/am/.rvm/gems/ruby-2.0.0-preview1 
⮀ irb 
2.0.0dev :001 > regex = /\A[a-zа-я\d]+\z/i ; regex =~ 'привет' 
# ⇒ nil 
⮀ rvm use ruby-head 
Using /home/am/.rvm/gems/ruby-head 
⮀ irb 
irb(main):001:0> regex = /\A[a-zа-я\d]+\z/i ; regex =~ 'привет' 
# ⇒ 0 
2

Эта ошибка выглядит так же, и может быть связано с this bug, что я спросил о ранее. I reported it to ruby trunk, и он был принят как ошибка. Надеюсь, это будет исправлено.

Смежные вопросы