[英]How to allow accented characters(UTF-8 supported) characters in TO and FROM of an email?
[英]How to prevent accented characters in an email field in Java using regex?
我有一個 email 字段,該字段當前使用 GenericValidator.isEmail 方法進行驗證。 但是現在我需要應用另一個驗證,以防止將重音字符發送到 email 地址。 所以我正在考慮使用正則表達式模式匹配方法,我在 stackoverflow 本身中找到了一個
if (Pattern.matches(".*[éèàù].*", input)) {
// your code
}
問題是我在模式中只看到 é è à ù 字符,但還有其他幾個重音字符,如 õ ü ì 等。那么有沒有一種方法可以為所有類型的重音字符匹配模式? 我需要匹配 NL(荷蘭語)、FR(法語)和 DE(德語)語言的重音字符。 我需要檢查我的 email 地址是否有任何重音字符,是否需要在那里停止執行並拋出錯誤
事實證明,您想要匹配除 ASCII 字母之外的任何字母。
我建議從匹配任何 Unicode 字母的\p{L}
模式中減去ASCII 字母:
Pattern.matches("(?s).*[\\p{L}&&[^A-Za-z]].*", input)
這里,
(?s)
- Pattern.DOTALL
嵌入標志選項,使.
跨行匹配.*
- 任何零個或多個字符,盡可能多[\\p{L}&&[^A-Za-z]]
- 除 ASCII 字母外的任何 Unicode 字母.*
- 任何零個或多個字符,盡可能多。 請注意,最好使用find()
,因為它也返回部分匹配項,並且不需要在上述模式中使用(?s).*
和.*
,這使得使用更長的字符串時效率更高:
Pattern.compile("[\\p{L}&&[^A-Za-z]]").matcher(input).find()
請參閱此 Java 演示。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.