假设我有一个字符串:
"__3_"
...我想谈谈:
"__###_"
基本上用重复出现的#
替换一个等于整数值的整数。我怎样才能做到这一点?
我了解反向引用可以与str.replace()
var str = '__3_'
str.replace(/[0-9]/g, 'x$1x'))
> '__x3x_'
我们可以使用str.repeat(n)
重复字符串序列n
次。
但是如何使用.replace()
的反向引用作为.repeat()
的参数?例如,这不起作用:
str.replace(/([0-9])/g,"#".repeat("$1"))
答案 0 :(得分:7)
"__3_".replace(/\d/, function(match){ return "#".repeat(+match);})
如果你使用babel或其他es6工具,它将是
"__3_".replace(/\d/, match => "#".repeat(+match))
如果您需要将__11+
替换为"#".repeat(11)
,请将正则表达式更改为/\d+/
是你想要的吗?
根据https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace
str.replace(regexp | substr,newSubStr | function)
如果你使用函数作为第二个参数
功能(替换) 要调用以创建新子字符串的函数(用于替换从参数#1接收的>子字符串)。提供给该函数的参数>在"将函数指定为参数"以下部分。
答案 1 :(得分:5)
试试这个:
var str = "__3_";
str = str.replace(/[0-9]+/, function(x) {
return '#'.repeat(x);
});
alert(str);

答案 2 :(得分:2)
老式方法:
"__3__".replace(/\d/, function (x) {
return Array(+x + 1).join('#');
});
答案 3 :(得分:0)
试试这个:
var str = "__3_";
str = str.replace(/[0-9]/g,function(a){
var characterToReplace= '#';
return characterToReplace.repeat(a)
});