2
字母我写的第一个和最后一个名称的验证:正则表达式重音
validates(:name,, format: { with: /\A[a-zA-Z]+\z/})
这只适用于字母,但现在需要将它与重音字符也延长。
可能通方案:
Mike Clark Chloé André
可能失败的情况:
Mike1 21Clark André3 Chloé#
字母我写的第一个和最后一个名称的验证:正则表达式重音
validates(:name,, format: { with: /\A[a-zA-Z]+\z/})
这只适用于字母,但现在需要将它与重音字符也延长。
可能通方案:
Mike
Clark
Chloé
André
可能失败的情况:
Mike1
21Clark
André3
Chloé#
这将是太难添加所有字母范围在你的正则表达式,幸运,因为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
有一些以前的ASCII-8重音字符,不由此正则表达式处理。 – mudasobwa
@mudasobwa:请提供一个这样的字符串的例子。什么是* ASCII-8重音字符*?我说'\ p {L}'匹配所有Unicode字母,并且它会。如果角色被预先分解,那就足够了。如果它们是多字节,'\ p {M}'应该匹配变音符号。 –
哦,对不起,我没理由把方括号当作括号。请忽略。 – mudasobwa