2013-04-07 21 views
1

紅寶石2.0之前,正則表達式的工作是這樣的:的Ruby 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 2013-04-07 14:28:44

+1

@mudasobwa你是否驗證過你正在運行'ruby 2.0',我在'2.0'上得到了與OP相同的結果。 – fmendez 2013-04-07 14:36:36

+0

@fmendez我正在運行'ruby-head'。我承認在'* -preview [1,2]'中有問題,最後。 – mudasobwa 2013-04-07 14:37:37

回答

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