gpt4 book ai didi

ruby-on-rails - 使用 utf8 字符的 ruby​​ 正则表达式在 rails 中的奇怪行为

转载 作者:数据小太阳 更新时间:2023-10-29 06:50:16 26 4
gpt4 key购买 nike

使用非标准 utf-8 字符时,我的验证正则表达式之一出现问题。因此,我进行了一些实验,发现 ruby​​ 正则表达式在 rails 环境或普通 ruby​​ 中表现不同。

我用中文字符串在这里发布我的实验。

在 ruby 中“纯”:

string = "運動會"
puts string[/\A[\w]*\z/]
=> match "運動會" - ok

在 rails 上:

# coding: utf-8
task :test => :environment do
string = "運動會"
puts string[/\A[\w]*\z/]
end
$ rake test
=> nothing - not ok

如果我省略 # coding: utf-8,它将带有 invalid multibyte char (US-ASCII)。无论如何,即使这样,它也不匹配。

当然,我已经检查了一切(ruby_version,utf-8 中脚本文件的编码..)

我用:

  • rails 3.0.7
  • ruby 1.9.2 (ruby-1.9.2-p180)

所以我的结论是 rails 改变了正则表达式的行为方式,我没有找到一种方法让它像在普通的 ruby​​ 中一样。

最佳答案

好的,我找到了问题的答案。 \w 在 ruby​​ 1.9 中仅使用 ascii 字符对 ruby​​ 1.8 中的所有 unicode 字符起作用。在 ruby​​ 1.9 中,现在我们必须使用:[\w\P{ASCII}]

更多信息:http://www.ruby-forum.com/topic/210770

关于ruby-on-rails - 使用 utf8 字符的 ruby​​ 正则表达式在 rails 中的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6095547/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com