我的问题
我有一个字符串与标签之间的电子邮件地址,我需要提取电子邮件。例如,从这里:
var myString = "This email for John <john@mail.com> needs to be extracted"我想提取john@mail.com
我试图修复
我想出了一个正则表达式来从字符串中提取电子邮件地址(它不需要验证电子邮件,只是一个简单的正则表达式):
/<\S*@\S*>/gi如果我的字符串没有其他标记,比如前一个标签,它就能正常工作。但是,当它发现这种情况时,这个正则表达式就失败了:
var myString = "This bold email for John <b><john@mail.com><b/> needs to be extracted"如何改进我的正则表达式,使其只匹配电子邮件,而忽略其他标记?
P.S.:我的最终目标是把这些标签从字符串中去掉(只有电子邮件标签),所以我也愿意接受其他的建议。
谢谢!
发布于 2020-06-12 06:45:42
发布于 2020-06-12 05:07:24
很难找到一个完美的正则表达式来匹配所有的电子邮件地址和唯一的电子邮件地址,但这应该适用于您的情况:
/<[^<\s]*\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b[^>\s]*>/gi
发布于 2020-06-12 05:10:31
"This bold email for John <b><john@mail.com><b/> needs to be extracted".match(/<\w+@\w+\.\w+/>)[0];
// <john@mail.com>\w匹配字母、数字和下划线。后面跟着一个+,它匹配这样一个不间断的字符串。
.是正则表达式中的一个特殊字符,因此必须转义。
所以在regex \w+@\w+\.\w+中,第一个\w+匹配john,然后@匹配@。下一个\w+匹配mail,\.匹配.,最后一个\w+匹配com。
https://stackoverflow.com/questions/62337758
复制相似问题