onceChild
2018-05-02 03:33
采纳率: 100%
浏览 5.3k

求一个匹配多邮箱的正则表达式(在线等)

需求如下:
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
如上

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

20条回答 默认 最新

  • tobecppproplus 2018-05-03 06:06
    已采纳

    模式采用 /\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'));
    
    已采纳该答案
    打赏 评论
  • jerrx_xie 2018-05-02 03:58
    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 />');
    打赏 评论
  • jerrx_xie 2018-05-02 03:58
     <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> 
    
    打赏 评论
  • li7976013 2018-05-02 04:43

    [A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}
    这个正则你看行么

    打赏 评论
  • tobecppproplus 2018-05-02 04:55

    这个应该是最简单的了。用的 JavaScript 语法

     var reg = /[\w]+?@[\s]+?\.com[.cn]?/g
    
    打赏 评论
  • qq_38451905 2018-05-02 05:08

    邮件名称部分:

    汉字在正则中表示为[\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,}]+

    打赏 评论
  • 刘骆 2018-05-02 06:06

      var reg = /^((([a-z0-9_.-]+)@([\da-z.-]+).([a-z.]{2,6}\;))*(([a-z0-9_.-]+)@([\da-z.-]+).([a-z.]{2,6})))$/;

    打赏 评论
  • 活出高姿态丶 2018-05-02 07:14

    ^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+.([a-zA-Z0-9.-_])+$

    打赏 评论
  • qq_291957296 2018-05-02 07:21

    function Isyx(yx) {
    var reyx = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/;
    return (reyx.test(yx));
    }

    打赏 评论
  • 大蛇王 2018-05-02 07:27

    匹配邮箱的正则表达式:^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$

    如果要验证邮箱是否有效可以找网上的邮箱验证接口

    打赏 评论
  • onceChild 2018-05-02 09:24

    我已经有能实现需求的答案了,感觉回答问题的大神好少啊这儿...上面的各位虽然没帮上忙,但是都谢谢了

    打赏 评论
  • qq_291957296 2018-05-02 09:45

    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 + "邮箱错误";
    }
    循环判断一下不就可以了;

    打赏 评论
  • liuerchong 2018-05-03 03:40

    /(^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+.[a-zA-Z0-9_-]+$)|(^$)/;

    打赏 评论
  • tobecppproplus 2018-05-03 06:13

    至于为什么不能多次使用 test,而每次都要新建一个对象来用 test。我们看一段引用:javascript regex test,注意看这句话:*test() called multiple times on the same global regular expression instance will advance past the previous match.*。意即:_在相同的全局正则表达式实例上多次调用test将会越过之前的匹配_。这就是为什么你之前说匹配不对的原因。

    打赏 评论
  • tobecppproplus 2018-05-03 06:30

    至于如何提取出来你想要的邮箱。可以看一下如下代码:

    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])
    
    打赏 评论
  • tobecppproplus 2018-05-03 06:34

    失误。所有的规则,改成这样:
    '''
    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])
    '''
    最简单的办法!答主可以采纳了!

    打赏 评论
  • ft_linyee 2018-05-03 07:21

    ^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$

    打赏 评论
  • qq_39187545 2018-05-03 09:12

    ^[A-Z0-9._%-]+@[A-Z0-9.-]+.[A-Z]{2,4}$

    打赏 评论
  • 小love容儿0216 2018-05-04 08:19

    /\w+?@\S+?.com[.cn]?[;]?/mg

    打赏 评论
  • 一只猫咪叫十四 2020-04-15 10:40

    亲测有用

    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]+)*$')

    打赏 评论

相关推荐 更多相似问题