如何从文本中获取具有这些域名的所有电子邮件
[@yahoo.com, @google.com, @bla.net]
在一个正则表达式中
\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];
}
以下是修改当前正则表达式以接受这些域的方法:
^[a-zA-Z0-9]+@(?:blabla\.com|google\.com|bla\.net)$
(?:...)
这使用了一个具有交替的非捕获组,...|...
以便您的正则表达式将接受您列出的任何域。
\b[a-zA-Z0-9._%-]+@(yahoo|google|bla)+.[a-zA-Z]{2,4}\b
如果你想构建或测试正则表达式,我也推荐Expresso 。