如何使用正则表达式匹配重音字符?

2023-12-21

我正在运行 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(使用前将#替换为@)

如何使用正则表达式匹配重音字符? 的相关文章

随机推荐