我试图用符号'%'替换以特定符号'@'开头的字符串,但条件是符号应该在字符串的开头.
例如.
@@@hello@hi@@
应该被替换
%%%hello@hi@@
我提出了与起始'@'符号匹配的正则表达式,但我只能将它替换一次,而不是用它匹配的次数替换它.
代码是
var str = "@@@hello@hi@@"; var exp = new RegExp('^@+', 'g'); var mystr = str.replace(exp, '%');
但是,它输出
%hello@hi@@
但是,预期的输出是
%%%hello@hi@@
我目前的解决方案是这样的:
var str = "@@@hello@hi@@"; var match = str.match(/^@+/g)[0]; var new_str = str.replace(match, ""); var diff_count = str.length-new_str.length; var new_sub_str = Array(diff_count+1).join("%") var mystr = new_sub_str + new_str;
这个解决方案确实给了我预期的输出,但我担心性能.
有没有更好的方法来实现这一目标?
您可以使用回调函数:
var mystr = '@@@hello@hi@@'.replace(/^@+/g, function(match) {
return Array(match.length + 1).join('%');
});
document.write(mystr);