尝试帮助抓取比赛的独特电子邮件,并让一些人使用gmail +符号技巧来解决它。我正试图通过一种干净的方式过滤电子邮件,以便删除+和@符号之间的所有内容,以便:
tester+dn2934u2@gmail.com
变为:
tester@gmail.com
到目前为止,我有:
\+(.*?)\@
删除+和@符号。有没有办法(而且我确定有)告诉正则表达式保留@字符所以我不需要重新添加它,替换它,或者其他一些技巧?
答案 0 :(得分:4)
您可以使用:
\+[^@]+(?=@)
(?=@)
是一个先行断言(它只是一个检查),意思是后跟@
答案 1 :(得分:3)
答案 2 :(得分:2)
只需将@包含在捕获组中:
\+(.*?@)
答案 3 :(得分:1)
您可以使用它来匹配@符号以外的所有内容:
\+[^@]+
完整的PHP代码:
$mail = preg_replace('%\+[^@]+%', '', $mail);
答案 4 :(得分:0)
把它放在选择器中?
eg \+(.*?\@)
答案 5 :(得分:0)
$email_stripped = preg_replace("/^(.+?)(\+.+)?(@.+)$/", "$1$3", $email);