自定义电子邮件验证正则表达式模式无法正常工作

时间:2016-02-10 16:46:41

标签: regex validation email

所以我想在客户端使用/.+[^\x20-\x2A\x2C\x2F\x3A-\x40\x5B-\x5E\x60\x7B-\xFF]\@[\w+-?]+(.{1})\w{2,}/模式进行电子邮件验证,但这种模式无法按预期工作。

我知道我的模式很简单,不会涵盖每个standard possibility,但这是我的正则表达式培训的一部分。

地址的本地部分只有在至少有一个数字[0-9]或字母[a-zA-Z]并且可以用逗号或加号或下划线(或同时全部)混合时才有效然后 @ 签署,然后是域名部分,但没有IP地址文字,只有至少有一个字母或数字的域名,后跟一个点和至少两个字母或两个数字。

在测试字符串表单中,不会验证 a@b.com 会验证 baz_bar.test + private @电子邮件测试服务..com ,这是错误的 - 反之亦然 - 验证 a@b.com 而不验证 baz_bar.test + private @电子邮件测试-service..com

我在那里遇到了什么具体错误? 我找不到这个,抱歉..

2 个答案:

答案 0 :(得分:0)

您要求本地部分(在@之前)至少两个字符,其中.+后跟字符类[^...]。它正在寻找任何字符,后跟另一个字符,而不在您指定的排除列表中。这就解释了为什么“a@b.com”不匹配。

第二个问题部分是由包含+-?字符的字符类范围.引起的。我想你想[-\w+?]+。 (你真的想要问号吗?)然后我想你想找一个文字.字符,但它最终会匹配与前一个字符不匹配的第一个字符。

在提供的正则表达式和解释性文本之间,我不确定您打算实施哪些规则。而且由于这是一个练习,所以最好还是给出提示。

您还需要使用^$锚点来确保整个字符串匹配。

答案 1 :(得分:0)

您需要更改正则表达式

?

请注意,我在@符号前添加了?,并在@符号后从第一个“组”中删除了?。添加=SUBSTITUTE(TEXT(SUM(IFERROR(LEFT(RIGHT(A1,ROW(A:A)))*10^(ROW(A:A)-1),"")),"#"),"0","") 将使您的正则表达式知道漏洞“组”不是强制性的。

在此处查看:https://regex101.com/r/iX5zB5/2