使用preg_replace()删除“@something”

时间:2013-01-27 01:45:40

标签: php regex

在堆栈溢出问题here中,解释说您可以使用以下代码删除电子邮件:

$pattern = "/[^@\s]*@[^@\s]*\.[^@\s]*/";
$replacement = "[removed]";
preg_replace($pattern, $replacement, $string); 

这删除了像johndoe@gmail.com这样的东西 - 如何修改正则表达式,以便从一大块文本中删除@johnDoe之类的内容?

我真的不理解正则表达式。

1 个答案:

答案 0 :(得分:1)

使用

$pattern = "/@[^@\s]*/";

[^@\s]

  • \s代表任何空格字符
  • [@\s]代表一个字符组,包含\s(即空格)和@字符。它与@\s
  • 相匹配
  • [^@\s]代表 @\s
  • 的字符组
  • afterall,[^@\s]匹配不是@字符或\s的单个字符(即空格)

*代表前一个令牌(即此处[^@\s])可以重复零次或多次。因此,[^@\s]*匹配任意长度的字符串,只要它不包含@\s


作为旁注,您的链接为匹配的电子邮件提供了非常简化的正则表达式。 The perfect way of matching e-mails are no simple matter.