我想替换具有超过6位数字的字符串中的所有单词。

例:

我的联络电话是(432)(323)(322)。我的其他号码是+1239343。另一个是343as32240'

至:

'我的联系电话为[已删除]。我的其他号码已删除。另一个[已删除]'

我知道正则表达式和preg_replace。只是需要正确的正则表达式。

最佳答案

您可以使用此正则表达式进行搜索:

(?<=\h|^)(?:[^\h\d]*\d){6}\S*


并替换为[removed]

分手:

(?<=\h|^)      # loookbehind to assert previous position is line start or whitespace
(?:            # start of non capturing group
   [^\h\d]*\d  # 0 or more non-space and non-digits followed by 1 digit
)              # end of non capturing group
{6}            # match 6 of this group
\S*            # followed by 0 or more non-space characters


码:

$result = preg_replace('/(?<=\h|^)(?:[^\h\d]*\d){6}\S*/', '[removed]', $str);


RegEx Demo

09-25 16:24