我有电子邮件验证的要求,电子邮件不应该有一个特定的域,
,例如,如果邮件是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演示