Regex 电子邮件中的连续通配符

Regex 电子邮件中的连续通配符,regex,email-validation,wildcard,Regex,Email Validation,Wildcard,我在看电子邮件验证。我在RFC规范中读到了这一点。点是不允许的,比如邮件。。me@server.com. 但是不同的野生字符是否允许连续出现?比如,邮件$me@server.com. 如果是这样的话,我怎么做一个正则表达式,只要它们是不同的,它将只接受单个野生字符的出现?它不应该接受像,…&&$$这样的选项,但是接受像,&$.$& 而且,由于允许使用大量的通配符,我不认为像\^&&&$$等正则表达式不是一个选项。有一些符合RFC的电子邮件验证正则表达式。它们并不漂亮,事实上它们非常可怕,跨越数百

我在看电子邮件验证。我在RFC规范中读到了这一点。点是不允许的,比如邮件。。me@server.com.

但是不同的野生字符是否允许连续出现?比如,邮件$me@server.com.

如果是这样的话,我怎么做一个正则表达式,只要它们是不同的,它将只接受单个野生字符的出现?它不应该接受像,…&&$$这样的选项,但是接受像,&$.$&


而且,由于允许使用大量的通配符,我不认为像\^&&&$$等正则表达式不是一个选项。

有一些符合RFC的电子邮件验证正则表达式。它们并不漂亮,事实上它们非常可怕,跨越数百个字符。您真的不想创建一个,或者使用它,或者编写您可以理解和维护的常规代码

这是一个符合RFC的正则表达式

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])

查看此链接以获取扩展信息和其他更实用的正则表达式

有一些符合RFC的电子邮件验证正则表达式。它们并不漂亮,事实上它们非常可怕,跨越数百个字符。您真的不想创建一个,或者使用它,或者编写您可以理解和维护的常规代码

这是一个符合RFC的正则表达式

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])

查看此链接以了解扩展信息和其他更实用的正则表达式,例如$等不同字符允许在一行中出现多次,是的。萨姆$$iam@example.com是一个完全有效的电子邮件地址。

不同的字符(如$)允许在一行中出现多次,是的。萨姆$$iam@example.com是一个完全有效的电子邮件地址。

我想这取决于您使用此电子邮件验证所做的操作,但为了表单输入目的,我已经在联机ASP.NET正则表达式验证程序中执行了多年

几个月来,我一直认为我有一个非常酷的正则表达式来处理这个问题。我在网上找到的,似乎很受欢迎。然而,有几次我接到一位客户的电话,试图填写表格验证不喜欢他们的电子邮件地址的申请表。谁知道有多少人有同样的问题,但没有打电话

我从惨痛的教训中吸取了教训:宁可犯贪婪的错误,也不要过于严格。换句话说,因为有太多的规则来定义电子邮件地址的有效性和无效性,我只需定义一个松散的开放式正则表达式来覆盖我的所有基础。它可能也会匹配一些无效的电子邮件地址,但就我而言,这没什么大不了的。此外,老实说——大多数时候,如果用户把他们的电子邮件地址弄错了,这将是一个拼写错误,而regex无论如何也不会发现

我现在用的是:

^[^<>\s\@]+(\@[\w\-]+(\.[\w\-]+)+)$
下面是一个工作示例来测试这一点:


这并不能解决您的主要问题,因为这仍然会匹配连续的点、破折号等。我仍然不能声称这会匹配每个有效的电子邮件地址,因为我真的不知道。但我可以说,在过去的3年里,我使用它的用户超过25000人,没有一个投诉。

我想这取决于你对电子邮件验证的处理方式,但我已经在在线ASP.NET正则表达式验证程序中为表单输入做了很多年了

几个月来,我一直认为我有一个非常酷的正则表达式来处理这个问题。我在网上找到的,似乎很受欢迎。然而,有几次我接到一位客户的电话,试图填写表格验证不喜欢他们的电子邮件地址的申请表。谁知道有多少人有同样的问题,但没有打电话

我从惨痛的教训中吸取了教训:宁可犯贪婪的错误,也不要过于严格。换句话说,因为有太多的规则来定义电子邮件地址的有效性和无效性,我只需定义一个松散的开放式正则表达式来覆盖我的所有基础。它可能也会匹配一些无效的电子邮件地址,但就我而言,这没什么大不了的。此外,老实说——大多数时候,如果用户把他们的电子邮件地址弄错了,这将是一个拼写错误,而regex无论如何也不会发现

我现在用的是:

^[^<>\s\@]+(\@[\w\-]+(\.[\w\-]+)+)$
下面是一个工作示例来测试这一点:


这并不能解决您的主要问题,因为这仍然会匹配连续的点、破折号等。我仍然不能声称这会匹配每个有效的电子邮件地址,因为我真的不知道。但我可以说,在过去的3年里,我使用它的用户超过25000人,没有一个投诉。

我会使用一个简单的电子邮件验证正则表达式+另一个检查双字符的正则表达式,如/[.&$]{2}/

我会使用一个简单的电子邮件验证正则表达式+另一个检查双字符的正则表达式,如/[.&$]{2}/请参见以下答案:

stackoverflow.com/questions/997078/email-regular-expres 锡安

stackoverflow.com/questions/201323/what-is-the-best-regular-expression-for-validating-email-address

stackoverflow.com/questions/36261/test-expand-my-email-regex

请记住,如前所述:判断电子邮件地址是否真正有效的唯一方法是向其发送电子邮件

看看这些答案:

stackoverflow.com/questions/997078/email-regular-expression

stackoverflow.com/questions/201323/what-is-the-best-regular-expression-for-validating-email-address

stackoverflow.com/questions/36261/test-expand-my-email-regex


请记住,如前所述:判断电子邮件地址是否真正有效的唯一方法是向其发送电子邮件

我最后用了这样的东西:

/^([a-zA-Z0-9]+([\.\!\'\#\$\%\&\*\+\-\/\=\?\^\_\`\{\|\}\~]{0,1}))*[a-zA-Z0-9]+\@(([a-zA-Z0-9\-]+[\.]?[a-zA-Z0-9]+){0,2})[\.][a-zA-Z]{2,4}$/
不漂亮:
但是非常符合我的要求。

我最终使用了这样的东西:

/^([a-zA-Z0-9]+([\.\!\'\#\$\%\&\*\+\-\/\=\?\^\_\`\{\|\}\~]{0,1}))*[a-zA-Z0-9]+\@(([a-zA-Z0-9\-]+[\.]?[a-zA-Z0-9]+){0,2})[\.][a-zA-Z]{2,4}$/
不漂亮:
但是非常符合我的要求。

谢谢。这是一个很大的帮助。我猜电子邮件验证遵循了一句格言,你不能讽刺每个人谢谢这是一个很大的帮助。我猜电子邮件验证遵循了一句格言,你不能讽刺每个人在这种情况下,什么是野性?以前没见过,很混乱。在这种情况下,什么是狂野角色?以前没有见过,非常混乱。这是个人服务特有的一个因素,与规范在一般意义上是否允许无关。这是个人服务特有的一个因素,与规范在一般意义上是否允许无关。发送电子邮件似乎是一个非常好的主意,但它仍有其自身的局限性。这些在本wiki页面中提到:。我想没有一个万无一失的计划。发送电子邮件似乎是一个很好的主意,但它仍然有自己的局限性。这些在本wiki页面中提到:。我想没有一个简单的计划。这是一个非常好的主意。谢谢。这是个好主意。谢谢。比我尝试过的数百万次愚蠢的长期验证更好,我想知道他们是如何获得70%以上的支持票的。向你脱帽致敬yaar:比我尝试过的数百万次愚蠢的长期验证更好,我想知道他们是如何获得70%以上的选票的。向你致敬,亚尔: