正则表达式:捕获特定字符串之前的所有字母和数字

问题描述 投票:0回答:1

我想捕获并替换位于一个特定字符串之前的所有字母和数字

preg_replace

示例:[电子邮件受保护] 结果:[电子邮件受保护]

我尝试过

(([a-z]*[^\.\-\_]*)|\d*[^\.\-\_]*)(?=(@(?:[\w-]+\.)+[\w-]{2,4}))
但它只得到最后一个匹配

regex pcre
1个回答
0
投票

你可以使用

preg_replace('/[a-zA-Z0-9](?=[^\s@]*@)/', 'a', $text)
preg_replace('/[^\W_](?=[^\s@]*@)/', 'a', $text)

请参阅 正则表达式演示

详情

  • [^\W_]
    /
    [a-zA-Z0-9]
    - 字母或数字
  • (?=[^\s@]*@)
    - 紧邻右侧,必须有零个或多个除空格和
    @
    之外的字符,然后是一个
    @
    字符。
© www.soinside.com 2019 - 2024. All rights reserved.