1

在 ruby​​ 2.0 之前,正则表达式是这样工作的:

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

我更新了 ruby​​ 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
4

2 回答 2

2

这个错误看起来很相似,可能与我之前询问过的这个错误有关。将它报告给 ruby​​ trunk,它已被接受为一个错误。希望它会得到修复。

于 2013-04-07T15:21:33.410 回答
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
于 2013-04-07T14:45:48.843 回答