我正在尝试用字符“ X”替换字符串中的数字,通过替换每个单独的数字,效果很好。
此代码:
let htmlStr = initialString.replace(/[0-9]/g, "X");
因此,在initialString = "p3d8"
输出为“ pXdX”
目标是用单个“ X”代替数字序列,而不是用序列号中的每个数字代替。例如:
如果initialString = "p348"
,则使用上面的代码,输出将为“ pXXX”。如何将其设置为“ pX”-为整个数字序列设置“ X”。
通过正则表达式可以吗?
欢迎任何帮助
答案 0 :(得分:5)
尝试
let htmlStr = "p348".replace(/[0-9]+/g, "X");
let htmlStr2 = "p348ad3344ddds".replace(/[0-9]+/g, "X");
let htmlStr3 = "p348abc64d".replace(/\d+/g, "X");
console.log("p348 =>",htmlStr);
console.log("p348ad3344ddds =>", htmlStr2);
console.log("p348abc64d =>", htmlStr3);
在正则表达式中,\d
等效于[0-9]
,加号+
表示我们匹配至少一位数字(因此我们匹配整个连续数字序列)。更多信息here或正则表达式机制电影here。
答案 1 :(得分:3)
您可以在+
之后使用[0-9]
,它将与任何数字(非0)匹配。选中 Quantifiers 。了解更多信息
let initialString = "p345";
let htmlStr = initialString.replace(/[0-9]+/g, "X");
console.log(htmlStr);
答案 2 :(得分:0)
使用\d
令牌来匹配与+
组合的任何数字以匹配一个或多个。以全局修饰符g
结尾的正则表达式将使正则表达式查找所有匹配项,而不是在第一个匹配项上停止。
这里是使用正则表达式的不错的online tool。
const maskNumbers = str => str.replace(/\d+/g, 'X');
console.log(maskNumbers('abc123def4gh56'));