2013-04-07 4 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

내 상자 (우분투/루비 2/RoR3)'regex =/\ A [a-za-я \ d] + \ z/i; regex = ~ 'привет''는 예상대로'0'을줍니다. 당신의 환경을 확인하는 것을 고려합니까? – mudasobwa

+1

@mudasobwa 당신이'ruby 2.0'을 실행하고 있다는 것을 확인 했습니까? OP가'2.0'과 같은 결과를 가지고 있습니다. – fmendez

+0

@fmendez 루비 헤드를 사용하고있었습니다. 마침내'* -preview [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이며 버그로 접수되었습니다. 잘하면, 그것은 고쳐질 것이다.