我正在运行 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
我有一个验证错误"Name format is invalid.
.
如何更改上面的正则表达式以匹配重音字符,例如à
, è
, é
, ì
, ò
, ù
, ...?
代替\w
, 使用POSIX 括号表达式 http://www.regular-expressions.info/posixbrackets.html [: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
不过,这确实不仅仅匹配重音字符。这是一个
好东西。确保您已阅读这个博客条目 http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/关于常见的误解
关于软件应用程序中的名称。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)