有人可以告诉我为什么下面的正则表达式不接受以下字符串:“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