ruby-on-rails - 如何在 ruby​​ 中使用 utf8 的正则表达式

标签 ruby-on-rails ruby regex utf-8

在 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/

相关文章:

ruby-on-rails - 我可以在指向同一个 Rails 应用程序的多个域之间共享一个 cookie 吗?

ruby-on-rails - 给定一个 Model.title,如何最好地查询首字母 = X 的所有记录

ruby-on-rails - 在 Rails 4.0 中扩展日期类

ruby - "rvmsudo"的问题

java - 尝试将 <br>、<BR>、<br +attribute> 标签替换为 <br/>

ruby-on-rails - Capistrano 使用 sudo 执行命令,尽管它已关闭

ruby-on-rails - Rails 5 上一篇或下一篇文章仅来自特定标签

ruby - jekyll 的帖子在 github 页面上没有正确显示/格式化(不过网站的其余部分还可以)

javascript - 查找两个字符串正则表达式中常见出现的单词

java - 正则表达式、java char + 空格和 char + 符号