簡體   English   中英

Ruby 2.0正則表達式和西里爾文

[英]Ruby 2.0 regex and cyrillic

在ruby 2.0之前,正則表達式就是這樣的:

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

我更新了ruby 2.0,它有一個bug:

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

我該如何處理這個問題? 如果沒有\\d在字符類中,它可以正常工作:

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

這個bug看起來很相似,可能與我之前詢問的這個bug有關。 把它報告給ruby trunk ,它已被接受為bug。 希望它會被修復。

這個bug好像是在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM