有人可以告訴我爲什麼下面的正則表達式不接受以下字符串:「bob at gmail dot com」?用於電子郵件檢測的Java正則表達式
([a-zA-Z0-9|\\.]+)(\\s*?)[at|@|(at)](\\s*?)(\\w+)(\\s*?)[dot|\\.|dt](\\s*?)([\\w+]{1,3})
有人可以告訴我爲什麼下面的正則表達式不接受以下字符串:「bob at gmail dot com」?用於電子郵件檢測的Java正則表達式
([a-zA-Z0-9|\\.]+)(\\s*?)[at|@|(at)](\\s*?)(\\w+)(\\s*?)[dot|\\.|dt](\\s*?)([\\w+]{1,3})
試試這個:
^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)* @[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$;
希望這有助於你
或者使用下面的類
org.apache.commons.validator.routines.EmailValidator
使用下面的方法
isValid(String email)
返回布爾
更改此:
[at|@|(at)]
到:
(?:at|@|\(at\))
和
[dot|\\.|dt]
到
(?:dot|\\.|dt)
[...]
是character class,(?:...)
是non capture group。
整個正則表達式爲:
([a-zA-Z0-9.]+)\\s*(?:at|@|\(at\))\\s*(\\w+)\\s*(?:do?t|\\.)\\s*(\\w+{1,3})
如果你想匹配的子域:
([a-zA-Z0-9.]+)\\s*(?:at|@|\(at\))\\s*(?:\\w+\\s*(?:do?t|\\.)\\s*)+(\\w+{1,3})
並且'(?:dot | \\。| dt)'到'(?:do?t | \\。)':p –
@ Jonny5:沒錯。 – Toto
非常感謝...作爲跟進 我已經寫了上面的RegEx來獲取電子郵件地址。 這成功地拿起gmail點鮑勃來 但是,它並沒有在GM點的Gmail點com回暖,鮑勃(攝像以下電子郵件存在[email protected]) 此外,它也產生了一些如果文字中出現「at」字樣,則爲誤報。例如字符串「運行時運行。它」將作爲電子郵件返回[email protected] 有關如何捕獲電子郵件的第二個變體並避免捕獲[email protected]的任何建議? – user3206133
不匹配'ABC @ com'這是一個有效的地址,請參閱:HTTP:/ /en.wikipedia.org/wiki/Email_address#Valid_email_addresses – Toto
甚至不符合OP要求'bob at gmail dot com'的內容。 – devnull