簡體   English   中英

電子郵件驗證模式未封閉的字符類

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM