正则表达式检测连字符

时间:2013-12-16 15:58:32

标签: c# regex asp.net-mvc email

现场演示:http://regex101.com/r/wW6wC4


我正在尝试添加一个允许使用以下电子邮件地址的正则表达式:

asdf.asdf@test-dom-a.com

([\w+\.]+@[\w]{1,})(\.)([0-9a-zA-Z\.\-]{1,})
                                     ^---- Thought this would allow hyphens...

我在这里想念的是什么?

4 个答案:

答案 0 :(得分:3)

您的模式要求在一段时间后出现连字符。试试这个:

([\w+.]+@[\w-]{1,})(\.)([0-9a-zA-Z.-]+)

Demonstration

或更简单:

([\w+.]+@[\w.-]+)

虽然第二种模式不要求,但地址的第二部分包含句点。

Demonstration

答案 1 :(得分:1)

你的正则表达式:

([\w+\.]+@[\w]{1,})(\.)([0-9a-zA-Z\.\-]{1,})

这将仅允许连字符作为最后一个字符。

允许在任何地方使用:

^([\w+.-]+@[\w-])(\.)([0-9a-zA-Z.-])$

或者只允许之间使用(第一个和最后一个位置除外):

^[\w+.-]*@\w[\w-]*\.[\w-]*[0-9a-zA-Z.]+$

工作演示:http://regex101.com/r/lQ1nV7

答案 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,})