-1

如何从文本中获取具有这些域名的所有电子邮件

[@yahoo.com, @google.com, @bla.net] 

在一个正则表达式中

4

3 回答 3

2
\b[^ ]+@(yahoo\.com|google\.com|bla\.net)\b

这匹配:

在此处输入图像描述

在 php 中,这变成

preg_match_all('/\b[^@]*@(yahoo\.com|google\.com|bla\.net)\b/', $subject, $result, PREG_PATTERN_ORDER);
for ($i = 0; $i < count($result[0]); $i++) {
    # Matched text = $result[0][$i];
}
于 2012-06-12T20:53:42.777 回答
2

以下是修改当前正则表达式以接受这些域的方法:

^[a-zA-Z0-9]+@(?:blabla\.com|google\.com|bla\.net)$

(?:...)这使用了一个具有交替的非捕获组,...|...以便您的正则表达式将接受您列出的任何域。

于 2012-06-12T20:54:12.473 回答
2

\b[a-zA-Z0-9._%-]+@(yahoo|google|bla)+.[a-zA-Z]{2,4}\b

如果你想构建或测试正则表达式,我也推荐Expresso 。

于 2012-06-12T20:56:55.190 回答