提取电子邮件地址但删除一些tld

时间:2016-08-23 17:23:26

标签: javascript regex email

我有一个字符串中的文字。我编写了一个从该字符串中提取电子邮件的函数,但我想删除具有特定tld的电子邮件。

例如,删除所有带有tld .xyz

的电子邮件
  • test@gmail.com - >好的
  • test@gmail.xyz - > OUT
  • test@gmail.XYZ - > OUT

这是功能。我不认为不区分大小写的集成实际上是有效的。有什么帮助吗?

function extraction(string) {
    var emails= string.match(/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}\b/ig);       
    if (/(xyz|us|porn/i)$/.test(emails)){ 
        return false;
    } else { 
        return emails;
    }   
}

2 个答案:

答案 0 :(得分:1)

您可以将该逻辑合并到第一个正则表达式中,并带有负面预测:

\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.(?!xyz\b|abc\b|xxx\b)[A-Z]{2,6}\b

插入的部分((?!xyz\b|abc\b|xxx\b))将确保排除这3个扩展程序(xyzabcxxx)。

无需第二个正则表达式。违规者将被立即排除在外。

对于不区分大小写,您需要在正则表达式的最后提供i修饰符,而不是中途:

/........./i

答案 1 :(得分:0)

首先,如果您试图限制某些词语,那么您应该在放置正则表达式之前进行验证。 what's new

其次,这个正则表达式的一部分是错的/(xyz | us | porn / i)$ /你在 i 之前放了一个未转义的正斜杠,这意味着什么都不是正则表达式中的错误我不是一名正则表达专家,我这样做并为你试图验证的这些词而努力 这是我的结果/ xyz | us | porn / ig我把/ ig表示任何单词大写或小写的单词都会被搜索,而全局单词则允许进行交互式搜索。

我学习英语,如果你不明白,请问我对你的文字有疑问,我会回答你。



function extraction(string) {
    var emails= string.match(/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}\b/ig);       
    if (/xyz|us|porn/ig.test(emails)){ 
        return false;
    } else { 
        return emails;
    }   
}

 document.write(extraction('test@gmail.com'));
 document.write('<br/>');
 document.write(extraction('test@gmail.xyz'));
 document.write('<br/>');
 document.write(extraction('test@gmail.XYZ'));
&#13;
&#13;
&#13;