如何修改电子邮件解析正则表达式,将@替换为(at)匹配?
修改匹配(at)替代@的正则表达式
很简单,只需要把原正则里匹配@的部分替换成转义后的\(at\)就可以了——因为括号()是正则中的特殊元字符(用来定义分组),必须用反斜杠转义才能匹配字面意义上的括号。
修改后的完整PHP代码如下:
<?php $res = preg_match_all( "/[a-z0-9]+([_\\.-][a-z0-9]+)*\(at\)([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}/i", $text, $matches ); ?>
关键修改点说明:
- 原正则中的
@被替换为\(at\):\(和\)分别转义左括号和右括号,确保正则会匹配字面的(at)字符串,而不是把它当作正则分组来解析。 - 原有的
/i修饰符保留,所以这个正则依然支持大小写不敏感匹配,比如(At)、(AT)、(aT)这类写法也能被正确识别。
举个例子,如果你的$text变量里包含alice_bob(at)test-domain.co.uk或者Charlie.Doe(AT)Example.com,都会被这个正则成功捕获。
内容的提问来源于stack exchange,提问作者Andrzej Jęziorski
相关产品推荐
相关产品推荐

