【问题标题】:removing "@something" with preg_replace()用 preg_replace() 删除“@something”
【发布时间】:2013-01-10 16:53:44
【问题描述】:

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

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

这会删除 johndoe@gmail.com 之类的内容 - 如何修改正则表达式以便从一段文本中删除 @johnDoe 之类的内容?

正则表达式我真的不是很懂。

【问题讨论】:

    标签: php regex


    【解决方案1】:

    使用

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

    [^@\s]

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

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


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

    【讨论】:

    • 谢谢!这正是我想要的。并感谢正则表达式代码的解释
    猜你喜欢
    • 2014-05-25
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 2015-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多