我正在尝试将[A-Z]
之前的字符替换为字符串中的@
之前的字符。所以这个
AreplacehereZ@domain.tld
需要成为:
A***********Z@domain.tld
我尝试过:
$string = 'AreplacehereZ@domain.tld';
$pattern = '/(?<!@)[^A-Z@\.]/';
$replacement = '*';
$replace = preg_replace($pattern, $replacement, $tring);
但结果是
'A***********Z@d*****.***'
因此,我无法通过仅使用@domain.tld
找到如何避免替换preg_replace()
的方法。
domain.tld
可以是任何内容,因此我无法在(?<!@domain.tld)
var中使用$pattern
。
答案 0 :(得分:2)
您可以从当前位置断言,匹配[^A-Z]
,然后确保您可以使用任意数量的字符,但仍会点击@
:
$pattern = '/[^A-Z](?=[^@]*@)/';
A***********Z@domain.tld