2017-02-22 28 views
-5

我正在使用以下正則表達式來驗證電子郵件地址。如何讓重音字符通過?允許重音字符的電子郵件地址正則表達式

^([a-zA-Z0-9!#\$%*/?\|\^\{\}`~&'+\-=_])+(\.([a-zA-Z0-9!#\$%*/?\|\^\{\}`~&'+\-=_])+)*@((\[(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5]))\]))|((([a-zA-Z0-9])+(([\-])+([a-zA-Z0-9])+)*\.)+([a-zA-Z])+(([\-])+([a-zA-Z0-9])+)*))$ 

這裏是正在驗證的電子郵件地址: äöüéè@paris.com

我最後修改正則表達式使用\ W,而不是A-ZA-Z0-9這將使國際在C#中通過字符。

^([\w!#\$%*/?\|\^\{\}`~&'+\-=_])+(\.([\w!#\$%*/?\|\^\{\}`~&'+\-=_])+)*@((\[(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5]))\]))|((([\w])+(([\-])+([\w])+)*\.)+([a-zA-Z])+(([\-])+([\w])+)*))$ 
+0

只需添加它們在字符類。 – Toto

+2

「由於正則表達式沒有完全標準化,所以帶有這個標籤的所有問題都應該包含一個指定適用編程語言或工具的標籤。」 [見這裏。](http://stackoverflow.com/tags/regex/info) – ClasG

+0

添加C#標記。我一直在使用上面的正則表達式多年。我不記得我在哪裏找到它。 –

回答

2

添加重音符號的字符類:

[äöüéèa-zA-Z0-9!#\$%*/?\|\^\{\}`~&'+\-=_] 

這必須也做爲其他角色類。

或者,如果你要處理的任何語言,如果你的正則表達式的味道支持Unicode屬性:

[\p{L}0-9!#\$%*/?\|\^\{\}`~&'+\-=_] 
1

隨着託託建議:

^([äöüéèa-zA-Z0-9!#\$%*/?\|\^\{\}`~&'+\-=_])+(\.([äöüéèa-zA-Z0-9!#\$%*/?\|\^\{\}`~&'+\-=_])+)*@ 

我剪掉正則表達式的休息,一切@依舊。

編輯:請注意,在兩個字符類添加這些字符,如果你要堅持你的正則表達式

相關問題