【发布时间】:2013-03-29 14:32:49
【问题描述】:
在 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
【问题讨论】:
-
在我的盒子(Ubuntu/Ruby2/RoR3)
regex = /\A[a-zа-я\d]+\z/i ; regex =~ 'привет'上按预期给出了0。您是否考虑检查您的环境? -
@mudasobwa 你确认你正在运行
ruby 2.0,我在2.0上得到了相同的结果。 -
@mudasobwa 我不建议 OP 指向未发布的版本,因为它是一种移动目标(即 ruby 语言的主干分支)。
-
@Kvet 以下方式似乎对我有用:
/\p{Cyrillic}/.match("привет") -
@mudasobwa "直到 2.0.0 最终发布" 2.0.0 已经是一个发布版本 (ruby-2.0.0-p0)。