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 に答える