javascript - 用于电子邮件匹配的正则表达式

标签 javascript regex

我正在使用此正则表达式来匹配字符串中的电子邮件地址。

这里一切正常: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/

相关文章:

javascript - 检查是否使用 jasmine 渲染多个元素

javascript - 通过服务 Angular 加载本地 json 文件

javascript - 热重载如何工作?

Java正则表达式,替换某些字符,除了

javascript - 在javascript中使用正则表达式捕获

JavaScript onclick 事件在 IE9 及更低版本中不起作用

javascript - 弹出覆盖字段

regex - Powershell select-string 根据匹配数返回不同的值

regex - Applescript 从 PDF 文件中提取数字对象标识符 (DOI)

r - 从 stringi 字符集中的字母数字 id 中排除 "I"和 "O"