应用场景:需要将Json对象中的密码项,替换为******,可以看到password前面是字符,后面的结构是(”:“密码”),但是冒号之前或者之后很可能存在空字符,因此是查找(password“+空字符+:+空字符+”)之后,(“)之前的字符,就是密码。
{
"params": {
"redis.password": "aaaaa",
}
}
写在前面的正则表达式的知识:
? _________________代表?前面的字符,可有可无,最多一个
* ________________代表*之前的字符,可有可无多了不限
?= ________________exp1(?=exp2) 代表查找exp2之前的exp1
?<= _______________(?<=exp2)exp1 代表查找exp2之后的exp1
?! __________________exp1(?!exp2) 代表查找后面不是exp2的exp1
?<!_________________(?<!exp2)exp1 查找前面不是exp2的exp1
\"___________________转义双引号
:___________________匹配冒号
._____________________一切字符的通配符
[\s]{0,10}____________[\s]空字符一位(空格,tab,......) 加起来就是0到10位空字符
[备选字符列表]______不能加逗号分割,每个[],只能匹配一位字符
正则表达式
var patternStr = /(?<=[Pp]assword\"[\\s]{0,10}:[\\s]{0,10}\").*?(?=\")/gi;
const taskInfo = JSON.stringify(Json对象).replace(
patternStr,
'******'
);
this.taskShowDetail = JSON.parse(taskInfo);
查找(password + “ + 0-10位的空字符 + :+ 0-10位的空字符 + ”)后面的 一切字符
(?<=[Pp]assword\"[\\s]{0,10}:[\\s]{0,10}\").*?
查找(“)之前的一切字符
.*?(?=\")
即查找(password + “ + 0-10位的空字符 + :+ 0-10位的空字符 + ”)后面的 、(“)之前的一切字符