[英]Email validation pattern Unclosed Character Class
我使用的是在如何驗證電子郵件中找到的電子郵件驗證模式,除了它在電子郵件的第一部分允許+
且我的規范中不允許使用之外,它工作正常。 原始代碼是
public static final String EMAIL_PATTERN = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
+ "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
protected boolean isInvalidEmail(String email) {
pattern = Pattern.compile(EMAIL_PATTERN);
matcher = pattern.matcher(email);
return !matcher.matches();
}
我以為我可以從"^[_A-Za-z0-9-\\\\+]
刪除+
,但出現Pattern Syntax Exception: Unclosed Character Class
。有人可以告訴我為什么刪除+
取消該類嗎?謝謝!
您必須刪除\\\\+
部分。
\\\\
轉義\\
字符。 \\+
轉義+
正則表達式運算符。 因此\\\\+
分解為\\+
,表示匹配文字+
字符。
注意: +
正則表達式運算符表示匹配前面的一個或多個元素。
它為您提供未封閉Unclosed Character Class
的原因是因為現在僅刪除+
轉義右方括號,因此將其視為模式的一部分。 因此,該類沒有匹配的右方括號。 正如Jonny Henly提到的,解決方案是刪除\\\\+
以符合您的規范,但這給出了為什么未封閉的答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.