我正在努力进行电子邮件验证,这将允许添加已发送地址的电子邮件,只要它们不来自某些TLD。问题是,我的Regex行为不正常。我希望它确保电子邮件有效并且没有一些TLD,例如,我想要“ johndoe@domain.com”,但是我不想要“ johndoe@domain.xyz”,在第二个示例中,我阻止添加“ xyz”电子邮件的TLD。这是我当前的正则表达式:
^[a-zA-Z0-9]+[a-zA-Z0-9._%-]*@.*\.(?!xyz)$
问题在于,TLD将会去向何处,根本不会匹配任何内容。它不会匹配不应该匹配的xyz,但也不会匹配org,com,net或任何其他TLD。在Regex方面,我并不太先进,但是我认为负先行只会阻止其后的字符串,而不会阻止其后的任何内容。
感谢您的帮助。
答案 0 :(得分:2)
通过使用负前瞻,您是在告诉正则表达式不匹配xyz (?!xyz)
,但您没有在告诉它匹配什么。
如果您要匹配其他任何内容,可以在.*
之后附加(?!xyz)
:
^[a-zA-Z0-9]+[a-zA-Z0-9._%-]*@.*\.(?!xyz).*$