我有一个字符串中的文字。我编写了一个从该字符串中提取电子邮件的函数,但我想删除具有特定tld的电子邮件。
例如,删除所有带有tld .xyz
的电子邮件这是功能。我不认为不区分大小写的集成实际上是有效的。有什么帮助吗?
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;
}
}
答案 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个扩展程序(xyz
,abc
,xxx
)。
无需第二个正则表达式。违规者将被立即排除在外。
对于不区分大小写,您需要在正则表达式的最后提供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;