所以我想在客户端使用/.+[^\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
我在那里遇到了什么具体错误? 我找不到这个,抱歉..
答案 0 :(得分:0)
您要求本地部分(在@之前)至少两个字符,其中.+
后跟字符类[^...]
。它正在寻找任何字符,后跟另一个字符,而不在您指定的排除列表中。这就解释了为什么“a@b.com”不匹配。
第二个问题部分是由包含+-?
字符的字符类范围.
引起的。我想你想[-\w+?]+
。 (你真的想要问号吗?)然后我想你想找一个文字.
字符,但它最终会匹配与前一个字符不匹配的第一个字符。
在提供的正则表达式和解释性文本之间,我不确定您打算实施哪些规则。而且由于这是一个练习,所以最好还是给出提示。
您还需要使用^
和$
锚点来确保整个字符串匹配。
答案 1 :(得分:0)
您需要更改正则表达式
?
请注意,我在@
符号前添加了?
,并在@
符号后从第一个“组”中删除了?
。添加=SUBSTITUTE(TEXT(SUM(IFERROR(LEFT(RIGHT(A1,ROW(A:A)))*10^(ROW(A:A)-1),"")),"#"),"0","")
将使您的正则表达式知道漏洞“组”不是强制性的。