Email regex验证javascript不应该包含example.com



我有电子邮件验证的要求,电子邮件不应该有一个特定的域,

,例如,如果邮件是email@example.com,则无效。也就是RegExp应该排除example.com

我尝试使用like来排除像

这样的字符串
^w+@[a-zA-Z_]+?.[a-zA-Z]{2,3}$.?!example.com

不工作

请帮我做一个RegExp

使用这个正则表达式

(?=.*@)(?!.*example).*

匹配所有不来自example.com域的邮件

我为你做了一个函数。

function isValidEmail(input, excludedDomain) {
    alert(new RegExp("(?=.*@)(?!.*" + excludedDomain + ").*").test(input));
}
isValidEmail("hi@example.com", "example"); //false
isValidEmail("hi@hotmail.com", "example"); //true

演示:http://jsfiddle.net/W3rLU/

正确的Regexp是这样的

^w+@(?!example.com)[a-zA-Z_]+?.[a-zA-Z]{2,3}$

Debuggex演示

它的意思是:在@之后,检查后面没有跟着"example.com",然后检查后面跟着一个字符和两个或三个字母的域名。

我还建议你稍微改变一下,允许用数字和破折号(例如myname@domain-123.com)和子域(myname@subdomain.domain.com)的域名使用这个表达式:

^w+@(?!example.com)[A-Za-z0-9-]+(.[A-Za-z0-9-]+)*(.[A-Za-z]{2,6})$

Debuggex演示

相关内容

最新更新