我尝试匹配电子邮件地址,但仅当它们没有以 "mailto:" 开头时。我尝试使用以下正则表达式:
"/(?<!mailto:)[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})/"
对这个字符串进行匹配:
'<a href="mailto:someemail@domain.com">EMAIL</a> ... otheremail@domain.com '
我期望只捕获 'otheremail@domain.com'
,但我还收到了 'omeemail@domain.com'
- 缺少了 's'
。我想知道这里出了什么问题。难道在查询断言之后不能有一个普通的正则表达式吗?
我在 PHP 中的完整示例如下:
$testString = '<a href="mailto:someemail@domain.com">EMAIL</a> ... otheremail@domain.com ';
$pattern = "/(?<!mailto:)[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})/";
preg_match_all($pattern, $testString, $matches);
echo('<pre>');print_r($matches);echo('</pre>');
谢谢你!
[_a-z0-9\-]
。 - Peter