我需要通过正则表达式替换给定格式的以下字符串。任何帮助都将不胜感激。
1.johnsmith@gmail.com=>johxxxxx@xxxx.xxx(除前三个字符@和点(.)外,所有字符都应替换为x)。1.John Smith=>Johx SMixx(除每个字母的前三个字符外,所有字符都应替换为x)1.9876543210=>987xxx3210(除前三和后四个字符外,所有字符都应替换为x)
先谢谢你。
ig9co6j11#
php > echo preg_replace('/(?<=...)[^@.]/', 'x', 'johnsmith@gmail.com'); johxxxxxx@xxxxx.xxx
https://regex101.com/r/ASq1N2/1
php > echo preg_replace('/(?<=S{3})S/', 'x', 'John Smith'); Johx Smixx
https://regex101.com/r/zqhwSg/1
php > echo preg_replace('/(?<=.{3}).(?=.{4})/', 'x', '9876543210'); 987xxx3210
https://regex101.com/r/ppmBUm/1
公元1年。方法:A)我想替换所有不是@或.的单个字符B)我要确保要替换的字符至少是字符串中的第4个字符。这意味着它必须至少还有3个字符
@
.
A)为了匹配字符,我使用了[]“Character Class”运算符。在它中,我可以指定要匹配的字符。或者,如果我以^开头,则不匹配的字符。这就是[^@.]将匹配而不是@或.之一的单个字符的原因。(注:^在[]之外有不同的含义)。
[]
^
[^@.]
B)我们可以使用“向后看”(?=)表达式向左看。在=之后,我必须指定要匹配的内容。我想匹配任何3个字符,所以...就可以了。(因为字符类之外的.与任何字符匹配)(作为替代解决方案,我也可以使用.{3},就像我在答案3中所做的那样。意思是“匹配任意字符,精确匹配3次”)产生(?=...)
(?=)
=
...
.{3}
(?=...)
现在让我们把它插在一起。首先向左看,以确保我们要匹配的角色至少还有3个其他角色。那么让我们来匹配一下角色吧。(?<=...)[^@.]
(?<=...)[^@.]
1条答案
按热度按时间ig9co6j11#
https://regex101.com/r/ASq1N2/1
https://regex101.com/r/zqhwSg/1
https://regex101.com/r/ppmBUm/1
公元1年。
方法:
A)我想替换所有不是
@
或.
的单个字符B)我要确保要替换的字符至少是字符串中的第4个字符。
这意味着它必须至少还有3个字符
A)为了匹配字符,我使用了
[]
“Character Class”运算符。在它中,我可以指定要匹配的字符。或者,如果我以
^
开头,则不匹配的字符。这就是[^@.]
将匹配而不是@
或.
之一的单个字符的原因。(注:
^
在[]
之外有不同的含义)。B)我们可以使用“向后看”
(?=)
表达式向左看。在=
之后,我必须指定要匹配的内容。我想匹配任何3个字符,所以...
就可以了。(因为字符类之外的.
与任何字符匹配)(作为替代解决方案,我也可以使用
.{3}
,就像我在答案3中所做的那样。意思是“匹配任意字符,精确匹配3次”)
产生
(?=...)
现在让我们把它插在一起。
首先向左看,以确保我们要匹配的角色至少还有3个其他角色。那么让我们来匹配一下角色吧。
(?<=...)[^@.]