需求如下:
1.邮箱之间用英文分号分割;
2.输入的邮箱有可能有中文,大写字母之类的东西
3.正常的邮箱的验证要求
4,验证字符串:
1:sjkak@sads.com
2:asdjl123@123.com
3:ASD@qq.com
4:asdasd@sadasd.com;
5:中文12saAS@asd.com
6:sjkak@sads.com;sdasd@sadasd.com;文12saAS@asd.com;
7:sjkak@sads.com;sdasd@sadasd.com;文12saAS@asd.com
8:asdasdsad
9:asdasd@sadasd.com;asdasdsad
10:asdasd@sadasd.com;123ASD中文
11.ajsldjjadl@ajslkdjsaldjasld
如上
模式采用 /\w+?@\S+?\.com[.cn]?[;]?/mg
console.log(/\w+?@\S+?\.com[.cn]?[;]?/mg.test('sjkak@sads.com'));
console.log(/\w+?@\S+?\.com[.cn]?[;]?/mg.test('asdjl123@123.com'));
console.log(/\w+?@\S+?\.com[.cn]?[;]?/mg.test('ASD@qq.com'));
console.log(/\w+?@\S+?\.com[.cn]?[;]?/mg.test('asdasd@sadasd.com;'));
console.log(/\w+?@\S+?\.com[.cn]?[;]?/mg.test('中文12saAS@asd.com'));
console.log(/\w+?@\S+?\.com[.cn]?[;]?/mg.test('sjkak@sads.com;sdasd@sadasd.com;文12saAS@asd.com;'));
console.log(/\w+?@\S+?\.com[.cn]?[;]?/mg.test('sjkak@sads.com;sdasd@sadasd.com;文12saAS@asd.com'));
console.log(/\w+?@\S+?\.com[.cn]?[;]?/mg.test('asdasdsad'));
console.log(/\w+?@\S+?\.com[.cn]?[;]?/mg.test('asdasd@sadasd.com;asdasdsad'));
console.log(/\w+?@\S+?\.com[.cn]?[;]?/mg.test('asdasd@sadasd.com;123ASD中文'));
console.log(/\w+?@\S+?\.com[.cn]?[;]?/mg.test('ajsldjjadl@ajslkdjsaldjasld'));
function isEmail(str){ var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/; return reg.test(str); } var str = 'test@hotmail.com'; document.write(isEmail(str)+'<br />'); var str2 = 'test@sima.vip.com'; document.write(isEmail(str2)+'<br />'); var str3 = 'te-st@qq.com.cn'; document.write(isEmail(str3)+'<br />'); var str4 = 'te_st@sima.vip.com'; document.write(isEmail(str4)+'<br />'); var str5 = 'te.._st@sima.vip.com'; document.write(isEmail(str5)+'<br />'); <script type="text/javascript">
function isEmail(str){
var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/;
return reg.test(str);
}
var str = 'test@hotmail.com';
document.write(isEmail(str)+'<br />');
var str2 = 'test@sima.vip.com';
document.write(isEmail(str2)+'<br />');
var str3 = 'te-st@qq.com.cn';
document.write(isEmail(str3)+'<br />');
var str4 = 'te_st@sima.vip.com';
document.write(isEmail(str4)+'<br />');
var str5 = 'te.._st@sima.vip.com';
document.write(isEmail(str5)+'<br />');
</script>
[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}
这个正则你看行么
这个应该是最简单的了。用的 JavaScript 语法
var reg = /[\w]+?@[\s]+?\.com[.cn]?/g
邮件名称部分:
汉字在正则中表示为[\u4e00-\u9fa5]
字母和数字表示为A-Za-z0-9
因此邮件名称部分的正则表达式整理如下:
[A-Za-z0-9\u4e00-\u9fa5]+
邮件域名部分:
一般域名的规律为“[N级域名][三级域名.]二级域名.顶级域名”,比如“qq.com”、“www.qq.com”、“mp.weixin.qq.com”、“12-34.com.cn”,分析可得域名类似“xx .xx .xx .xx”组成。
“xx”部分可以表示为[a-zA-Z0-9_-]+
“.xx”部分可以表示为.[a-zA-Z0-9_-]+
多个“.xx”可以表示为(.[a-zA-Z0-9_-]+)+
得出域名部分的表达式为[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+。
我们综合上面两部分得出最终表达式:
[[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+[;]{0,}]+
var reg = /^((([a-z0-9_.-]+)@([\da-z.-]+).([a-z.]{2,6}\;))*(([a-z0-9_.-]+)@([\da-z.-]+).([a-z.]{2,6})))$/;
^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+.([a-zA-Z0-9.-_])+$
function Isyx(yx) {
var reyx = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/;
return (reyx.test(yx));
}
匹配邮箱的正则表达式:^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$
如果要验证邮箱是否有效可以找网上的邮箱验证接口
我已经有能实现需求的答案了,感觉回答问题的大神好少啊这儿...上面的各位虽然没帮上忙,但是都谢谢了
function Isyx(yx) {
var a = 0;
var b = false;
var fgyx = yx.split(';');
for (var i = 0; i < fgyx.length; i++) {
var reyx = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/;
b = reyx.test(fgyx[i]);
if (b) {
a = i;
}
}
return "第" + a + "邮箱错误";
}
循环判断一下不就可以了;
/(^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+.[a-zA-Z0-9_-]+$)|(^$)/;
至于为什么不能多次使用 test,而每次都要新建一个对象来用 test。我们看一段引用:javascript regex test,注意看这句话:*test() called multiple times on the same global regular expression instance will advance past the previous match.*。意即:_在相同的全局正则表达式实例上多次调用test将会越过之前的匹配_。这就是为什么你之前说匹配不对的原因。
至于如何提取出来你想要的邮箱。可以看一下如下代码:
var mailReg = /(\w+?@\S+?\.com[.cn]?)[;]?/mg;
var result = undefined;
while (result = mailReg.exec('sjkak@sads.com;sdasd@sadasd.com;文12saAS@asd.com'))
console.log(result[1])
失误。所有的规则,改成这样:
'''
var mailReg = /([\w\W]+?@\S+?.com[.cn]?)[;]?/mg;
var result = undefined;
while (result = mailReg.exec('sjkak@sads.com;sdasd@sadasd.com;文12saAS@asd.com'))
console.log(result[1])
'''
最简单的办法!答主可以采纳了!
^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$
^[A-Z0-9._%-]+@[A-Z0-9.-]+.[A-Z]{2,4}$
/\w+?@\S+?.com[.cn]?[;]?/mg
亲测有用
ORACLE中使用SQL的正则表达式判断邮箱格式
在数据库中,有时需要判断字符串是否是一个或者多个邮箱格式,可以使用如下语句判断:
SELECT COUNT(1)
FROM dual
WHERE regexp_like(v_mail,'^\w+((-\w+)|(.\w+))*\@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+(;{1,1}\w+((-\w+)|(.\w+))*\@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+)*$')