电子邮件正则表达式验证javascript不应包含example.com

时间:2014-03-22 13:43:48

标签: javascript regex email

我要求电子邮件验证电子邮件不应与特定域名相关,

例如,如果电子邮件为email@example.com,则该邮件无效。那就是RegExp应该排除域example.com

我尝试使用like来排除像

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

它不能正常工作

请帮我RegExp

2 个答案:

答案 0 :(得分:1)

使用此正则表达式

(?=.*@)(?!.*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/

答案 1 :(得分:1)

正确的Regexp是这样的。

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

Debuggex Demo

这意味着:在@之后,检查" 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 Demo