我需要在不是电子邮件地址的字符串中找到所有内容。
以下是我的版本如何查找电子邮件地址。
^[a-zA-Z0-9_.-]+@[a-zA-Z0-9][a-zA-Z0-9-.]+\.([a-zA-Z]{2,6})$
我想修改此正则表达式以查找反向 - 除了任何字符串中的电子邮件地址之外的所有内容。
asdasd
123@asd.com sda
注意:我希望在以下行中获得status == true
:
var status = myString.match(pattern matches everything that is not an email address);
答案 0 :(得分:2)
官方标准称为RFC 2822。然后是电子邮件地址的正则表达式模式:
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
RFC 2822的更实际的实现(如果我们省略使用双引号和方括号的语法),它仍然匹配当前实际使用的99.99%的所有电子邮件地址,是:
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
要从myString
获取不匹配的“字词”列表,请使用JavaScript代码:
var status = myString.match(/(?:\s|^)(?![a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)\S+\b(?=\s|$)/ig);
检查this demo。
答案 1 :(得分:0)
您可以使用空字符串调用replace
,以删除与您的模式匹配的电子邮件实例:
var noEmails = stringWithEmails.replace(/[a-zA-Z0-9_.-]+@[a-zA-Z0-9][a-zA-Z0-9-.]+\.([a-zA-Z]{2,6})/g, '');
请注意,我删除了前导^
并尾随$
。这些是强制模式匹配整个字符串(^
是行的开头,$
是行尾。)
答案 2 :(得分:0)
var result=myString.replace('[a-zA-Z0-9_.-]+@[a-zA-Z0-9][a-zA-Z0-9-.]+\.([a-zA-Z]{2,6})', '');
答案 3 :(得分:0)
与string.replace(/ [/ [A-ZA-Z0-9 _.-] + @ [A-ZA-Z0-9] [A-ZA-Z0-9 - ] +([A-ZA。 -Z] {2,6})] * / gi,'');
它的工作
答案 4 :(得分:-1)
根据您的修改,您真正想要的是
var status = ! myString.match(email pattern)
也就是说,使用您的电子邮件模式(或Ωmega发布的巨型内容)与警卫。这将匹配仅电子邮件地址的所有内容。这与您想要的完全相反,因此反转布尔值就完成了。