带有重音的字母的正则表达式

时间:2016-02-11 14:03:45

标签: ruby-on-rails ruby regex

我为名字和姓氏写了一个验证:

validates(:name,, format: { with: /\A[a-zA-Z]+\z/})

这仅适用于字母,但现在也需要用重音字符扩展它。

  • 可能的传递方案:

    Mike
    Clark
    Chloé
    André
    
  • 可能的失败情况:

    Mike1
    21Clark
    André3
    Chloé#
    

1 个答案:

答案 0 :(得分:3)

在正则表达式中添加所有字母范围会非常困难,幸运的是,由于Ruby正则表达式具有用于匹配所有Unicode字母的Unicode类别类,所以没有必要。

您可以使用

/\A[\p{L}\p{M}]+\z/

\p{L}将匹配所有Unicode字母,\p{M}将匹配所有变音符号。

请参阅IDEONE demo,了解此正则表达式的工作原理。这是一个示例方法:

def checkName(name)
    return /\A[\p{L}\p{M}]+\z/  =~ name ? true : false
end