我想替换具有超过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