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