首页 > 解决方案 > 需要语法将后缀字符串验证添加到电子邮件地址格式验证正则表达式

问题描述

我有一个现有的电子邮件地址验证正则表达式,并且正在寻找一个额外的正则表达式函数,如果样本以.ocm结尾,该函数也将不匹配。
此请求的原因是提供额外的数据输入验证,以防止我们遇到的最常见的错字:.ocm而不是.com

例如,blah@somewhere.com应该返回一个匹配,但blah@somewhere.ocm不应该。

恐怕我不知道我正在使用什么风格的正则表达式,因为它位于一个黑盒专有应用程序中,“接受正则表达式”进行用户输入验证。我确实知道该应用程序可能是用 VB6 编写的,如果这有帮助的话。

这是现有的正则表达式,它适用于其预期目的:


^(?=[a-zA-Z0-9][a-zA-Z0-9@._%+-]{5,253}$)[a-zA-Z0-9@._%+-]{1,64}@(?:(?=[a-zA-Z0-9-]{1,63}\.)[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*\.){1,8}[a-zA-Z]{2,63}$

样本将始终是长度大于零的字符串,因此如果不处理这些并不重要。

似乎在正则表达式末尾的否定回溯应该是最好的方法,但我找不到正确的语法来使它与我现有的正则表达式一起工作。如果有人可以建议如何将它们与我现有的正则表达式集成,这里有一些方法可能会起作用:

https://stackoverflow.com/a/406408/6195684

https://code.i-harness.com/en/q/fa3887

https://stackoverflow.com/a/11432373/6195684

提前致谢。

标签: stringvbscriptregex-negation

解决方案


只需添加一个负前瞻,如下所示:

(?!.*[.]ocm$)

是原始的正则表达式。

是修改后的正则表达式。


推荐阅读