我正在运行 Ruby on Rails 3.0.10 和 Ruby 1.9.2。我正在使用以下正则表达式来匹配名称:
NAME_REGEX = /^[\w\s'"\-_&@!?()\[\]-]*$/u
validates :name,
:presence => true,
:format => {
:with => NAME_REGEX,
:message => "format is invalid"
}
但是,如果我尝试保存如下的一些单词:
Oilalà
Pì
Rùby
...
# In few words, those with accented characters
我有一个验证错误“名称格式无效。
。
我如何更改上面的正则表达式以便匹配重音字符,如 à
、è
、é
、 ì
, ò
, ù
, ...?
最佳答案
代替\w
,使用POSIX bracket expression [:alpha:]
:
"blåbær dèjá vu".scan /[[:alpha:]]+/ # => ["blåbær", "dèjá", "vu"]
"blåbær dèjá vu".scan /\w+/ # => ["bl", "b", "r", "d", "j", "vu"]
在您的特定情况下,将正则表达式更改为:
NAME_REGEX = /^[[:alpha:]\s'"\-_&@!?()\[\]-]*$/u
不过,这确实匹配的不仅仅是重音字符。这是一个 好东西。请务必阅读 this blog entry关于常见的误解 关于软件应用程序中的名称。
关于ruby-on-rails - 如何将重音字符与正则表达式匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7292395/