Java正則表達式電子郵件首先,我知道不建議使用正則表達式用于電子郵件,但我必須對此進行測試。我有這個正則表達式:\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b在Java中,我這樣做了:Pattern p = Pattern.compile("\\b[A-Z0-9._%-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b");Matcher m = p.matcher("[email protected]");if (m.find())
System.out.println("Correct!");但是,無論電子郵件是否成立,正則表達式都會失敗。Eclipse中的“查找和替換”與相同的正則表達式一起工作正常。任何的想法?謝謝,
3 回答

catspeake
TA貢獻1111條經驗 獲得超0個贊
這是適用于Java的RFC822兼容的正則表達式:
Pattern?ptr?=?Pattern.compile("(?:(?:\\r\\n)?[?\\t])*(?:(?:(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[?\\t]))*\"(?:(?:\\r\\n)?[?\\t])*)(?:\\.(?:(?:\\r\\n)?[?\\t])*(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[?\\t]))*\"(?:(?:\\r\\n)?[?\\t])*))*@(?:(?:\\r\\n)?[?\\t])*(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[?\\t])*)(?:\\.(?:(?:\\r\\n)?[?\\t])*(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[?\\t])*))*|(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[?\\t]))*\"(?:(?:\\r\\n)?[?\\t])*)*\\<(?:(?:\\r\\n)?[?\\t])*(?:@(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[?\\t])*)(?:\\.(?:(?:\\r\\n)?[?\\t])*(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[?\\t])*))*(?:,@(?:(?:\\r\\n)?[?\\t])*(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[?\\t])*)(?:\\.(?:(?:\\r\\n)?[?\\t])*(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[?\\t])*))*)*:(?:(?:\\r\\n)?[?\\t])*)?(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[?\\t]))*\"(?:(?:\\r\\n)?[?\\t])*)(?:\\.(?:(?:\\r\\n)?[?\\t])*(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[?\\t]))*\"(?:(?:\\r\\n)?[?\\t])*))*@(?:(?:\\r\\n)?[?\\t])*(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[?\\t])*)(?:\\.(?:(?:\\r\\n)?[?\\t])*(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[?\\t])*))*\\>(?:(?:\\r\\n)?[?\\t])*)|(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[?\\t]))*\"(?:(?:\\r\\n)?[?\\t])*)*:(?:(?:\\r\\n)?[?\\t])*(?:(?:(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[?\\t]))*\"(?:(?:\\r\\n)?[?\\t])*)(?:\\.(?:(?:\\r\\n)?[?\\t])*(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[?\\t]))*\"(?:(?:\\r\\n)?[?\\t])*))*@(?:(?:\\r\\n)?[?\\t])*(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[?\\t])*)(?:\\.(?:(?:\\r\\n)?[?\\t])*(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[?\\t])*))*|(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[?\\t]))*\"(?:(?:\\r\\n)?[?\\t])*)*\\<(?:(?:\\r\\n)?[?\\t])*(?:@(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[?\\t])*)(?:\\.(?:(?:\\r\\n)?[?\\t])*(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[?\\t])*))*(?:,@(?:(?:\\r\\n)?[?\\t])*(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[?\\t])*)(?:\\.(?:(?:\\r\\n)?[?\\t])*(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[?\\t])*))*)*:(?:(?:\\r\\n)?[?\\t])*)?(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[?\\t]))*\"(?:(?:\\r\\n)?[?\\t])*)(?:\\.(?:(?:\\r\\n)?[?\\t])*(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[?\\t]))*\"(?:(?:\\r\\n)?[?\\t])*))*@(?:(?:\\r\\n)?[?\\t])*(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[?\\t])*)(?:\\.(?:(?:\\r\\n)?[?\\t])*(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[?\\t])*))*\\>(?:(?:\\r\\n)?[?\\t])*)(?:,\\s*(?:(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[?\\t]))*\"(?:(?:\\r\\n)?[?\\t])*)(?:\\.(?:(?:\\r\\n)?[?\\t])*(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[?\\t]))*\"(?:(?:\\r\\n)?[?\\t])*))*@(?:(?:\\r\\n)?[?\\t])*(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[?\\t])*)(?:\\.(?:(?:\\r\\n)?[?\\t])*(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[?\\t])*))*|(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[?\\t]))*\"(?:(?:\\r\\n)?[?\\t])*)*\\<(?:(?:\\r\\n)?[?\\t])*(?:@(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[?\\t])*)(?:\\.(?:(?:\\r\\n)?[?\\t])*(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[?\\t])*))*(?:,@(?:(?:\\r\\n)?[?\\t])*(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[?\\t])*)(?:\\.(?:(?:\\r\\n)?[?\\t])*(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[?\\t])*))*)*:(?:(?:\\r\\n)?[?\\t])*)?(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[?\\t]))*\"(?:(?:\\r\\n)?[?\\t])*)(?:\\.(?:(?:\\r\\n)?[?\\t])*(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[?\\t]))*\"(?:(?:\\r\\n)?[?\\t])*))*@(?:(?:\\r\\n)?[?\\t])*(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[?\\t])*)(?:\\.(?:(?:\\r\\n)?[?\\t])*(?:[^()<>@,;:\\\\\".\\[\\]?\\000-\\031]+(?:(?:(?:\\r\\n)?[?\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[?\\t])*))*\\>(?:(?:\\r\\n)?[?\\t])*))*)?;\\s*)");String[]?emails?=?{?"\"Fred?Bloggs\"@example.com",?"[email protected]",?"Chuck?Norris?<[email protected]>",?"webmaster@müller.de",?"[email protected]"?};for?(String?email?:?emails)?{ ????System.out.println(email?+?"?is?"?+?(ptr.matcher(email).matches()???"valid"?:?"invalid"));}
輸出:
"Fred?Bloggs"@example.com?is?valid [email protected]?is?invalidChuck?Norris?<[email protected]>?is?valid webmaster@müller.de?is?valid [email protected]?is?valid
添加回答
舉報
0/150
提交
取消