我正在使用此正则表达式来匹配字符串中的电子邮件地址。
这里一切正常:http://regexr.com?31e5a 使用此正则表达式:
([\w-\.]+)@((?:[\w]+\.)+)([a-zA-Z]{2,4})
但是当我尝试将它与 javascript 一起使用时,我只得到第一个电子邮件地址,而不是所有地址。
这是我的代码:
var emailsString = 'aaaaaaa@bbbb.com xxxxxxx cccccc@dddd.com';
var emails = emailsString.match(/([\w-\.]+)@((?:[\w]+\.)+)([a-zA-Z]{2,4})/)[0];
广告在这里,我只收到第一封电子邮件。
如果你能帮助我,谢谢。
最佳答案
您需要添加一个 'g' modifier :
var emailsString = 'aaaaaaa@bbbb.com xxxxxxx cccccc@dddd.com';## Heading ##
var emails = emailsString.match(/([\w-\.]+)@((?:[\w]+\.)+)([a-zA-Z]{2,4})/g)
此外,正如本文其他地方提到的,您的正则表达式并不匹配所有有效的电子邮件。用正则表达式匹配有效的电子邮件实际上是一个非常困难的问题,但首先,TLD 组件可以超过 4 个字符,因此您应该相应地进行调整。
我的建议是将此处提到的其他正则表达式与/g 修饰符结合使用以获得所有匹配项。
The g modifier is used to perform a global match (find all matches rather than stopping after the first match).
关于javascript - 用于电子邮件匹配的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11312662/