我目前匹配的电子邮件地址与下面的正则表达式(和连接它们作为mailto
链接)的电子邮件地址:链接,尚未联系
/([a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,64})/
不过,我不希望链接任何有前面已经链接为mailto
链接或现有的链接内,否则该链接被相当搞砸了像下面的(如[email protected]):
<a href="mailto:<a href="mailto:[email protected]">[email protected]</a>"><a href="mailto:[email protected]">[email protected]</a></a>
更新
下面是我用找到的电子邮件地址(对不起,没想到却是必需的)PHP的一个例子:
$input = "[email protected]<br><br><a href='mailto:[email protected]'>test email</a><br><br><a href='mailto:[email protected]'>[email protected]</a>";
$output = preg_replace("/([a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,64})/i", "<a href='mailto:$1'>$1</a>", $input);
//output
<a href="mailto:[email protected]">[email protected]</a><br><br><a mailto:[email protected]'="" href="mailto:<a href=">[email protected]</a>'>test email<br><br><a mailto:[email protected]'="" href="mailto:<a href=">[email protected]</a>'><a href="mailto:[email protected]">[email protected]</a>
更新2
我也有一个进一步正则表达式的问题(如果可能的话) - 我也有下面的正则表达式,使所有链接目标到一个新的窗口,但是,我不想任何东西mailto
链接到一个新窗口 - 是否有可能不是目标mailto
链接?
$output = preg_replace("/<(a)([^>]+)>/i", "<\\1 target=\"_blank\"\\2>", str_replace('target="_blank"', '', $output));
您需要提供代码片段,以便实际执行链接。简单的正则表达式模式是不够的。 –
不认为这是必需的(因为正则表达式是正则表达式),现在包括 – MrJ
任何人都可以协助吗? – MrJ