如何使用正则表达式识别特定域的邮件地址


How to identify mail addresses of specific domain using Regular expressions?

我想在给定字符串中包装一些gmail地址的html元素。如何使用php regex.

输入

$string = 'Sample text name@gmail.com another text name2@gmail.com,name2@yahoo.com';

输出

$string = "Sample text <div class='gmail'>name@gmail.com</div> another text <div class='gmail'>name2@gmail.com</div>,name2@yahoo.com";

试试这样写:

$string = 'Sample text name@gmail.com another text name2@gmail.com,name2@yahoo.com';
echo preg_replace("/(['._a-zA-Z0-9-]+@['._a-zA-Z0-9-])+/i", "<div class='gmail'>$1</div>", $string);

Gmail只:

$string = 'Sample text name@gmail.com another text name2@gmail.com,name2@yahoo.com';
echo preg_replace("/(['._a-zA-Z0-9-]+@gmail.com)+/i", "<div class='gmail'>$1</div>", $string);

您几乎可以采用任何电子邮件搜索正则表达式,只需将域名部分替换为固定字符串。然后搜索和替换不需要太多的努力:

 = preg_replace('/'b'w['w+.%!-]+@gmail.com'b/', "<div class=gmail>$0</div>", $src);
                      # ^^^ allowed special chars still insufficient
preg_replace('('w+?@'w+?'.'w+)', '<div class="gmail">$0</div>', 'Sample text name@gmail.com another text name2@gmail.com,name2@yahoo.com');