现场演示:http://regex101.com/r/wW6wC4
我正在尝试添加一个允许使用以下电子邮件地址的正则表达式:
asdf.asdf@test-dom-a.com
([\w+\.]+@[\w]{1,})(\.)([0-9a-zA-Z\.\-]{1,})
^---- Thought this would allow hyphens...
我在这里想念的是什么?
答案 0 :(得分:3)
您的模式要求在一段时间后出现连字符。试试这个:
([\w+.]+@[\w-]{1,})(\.)([0-9a-zA-Z.-]+)
或更简单:
([\w+.]+@[\w.-]+)
虽然第二种模式不要求,但地址的第二部分包含句点。
答案 1 :(得分:1)
你的正则表达式:
([\w+\.]+@[\w]{1,})(\.)([0-9a-zA-Z\.\-]{1,})
这将仅允许连字符作为最后一个字符。
允许在任何地方使用:
^([\w+.-]+@[\w-])(\.)([0-9a-zA-Z.-])$
或者只允许在之间使用(第一个和最后一个位置除外):
^[\w+.-]*@\w[\w-]*\.[\w-]*[0-9a-zA-Z.]+$
答案 2 :(得分:1)
您的连字符代码会显示在域名中第一个句点之后检查字符的段中。您需要在域名之前将其添加到匹配块:
([\w+\.]+@[\w\-]{1,})(\.)([0-9a-zA-Z\.\-]{1,})
^^---- check here as well.
实际上,我会搜索更全面的电子邮件正则表达式 - 你拥有的那个看起来不够强大恕我直言。
答案 3 :(得分:0)
您没有匹配“asd@fge.hj-kl”形式的字符串,因为您看不到您想要的内容。
([\w+\.]+)@([0-9a-zA-Z\.\-]{1,})\.com
([\w+\.]+)@([0-9a-zA-Z\.\-]{1,})\.([\w]{1,})