我要求电子邮件验证电子邮件不应与特定域名相关,
例如,如果电子邮件为email@example.com
,则该邮件无效。那就是RegExp
应该排除域example.com
我尝试使用like来排除像
这样的字符串^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$.?!example.com
它不能正常工作
请帮我RegExp
。
答案 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
答案 1 :(得分:1)
正确的Regexp是这样的。
^\w+@(?!example\.com)[a-zA-Z_]+?\.[a-zA-Z]{2,3}$
这意味着:在@之后,检查" 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})$