在 RoR 中,如何使用 utf8 代码验证中文或日文单词用于发布表单。
在GBK编码中,它使用[\u4e00-\u9fa5]+来验证中文单词。 在 Php 中,它使用/^[\x{4e00}-\x{9fa5}]+$/u 用于 utf-8 页面。
最佳答案
Ruby 1.8 对 UTF-8 字符串的支持很差。您需要在正则表达式中单独编写字节,而不是完整的代码:
>> "acentuação".scan(/\xC3\xA7/)
=> ["ç"]
要匹配您指定的范围,表达式会变得有点复杂:
/([\x4E-\x9E][\x00-\xFF])|(\x9F[\x00-\xA5])/ # (untested)
That will be improved in Ruby 1.9 , 不过。
编辑: 如评论中所述,unicode 字符\u4E00-\u9FA5 仅映射到 UTF16-BE 编码中的上述表达式。 UTF8 编码可能不同。所以你需要仔分割析这个映射,看看你能不能想出一个适用于 Ruby 1.8 的字节匹配表达式。
关于ruby-on-rails - 如何在 ruby 中使用 utf8 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/256822/