我在网站上阅读了一些其他问题和答案,但它们都与我所寻求的有点不同:用四个空格替换字符串开头的所有制表符。
到目前为止我尝试过的:
let m = '\t\tsomething\t'
查找标签并不难/\t/g
,但这会得到不在行首的制表符。所以使用m.match(/(\t\W)/)
对上面的示例进行了处理,得到了 2 个匹配项。
但使用时m.replace(/(\t\W)/, ' ')
,预期结果将是:
something // 8 spaces (4 for each \t)
但我得到的是这个:
something // 4 spaces for two tabs.
为什么这两个选项卡只替换一次?我怎样才能替换每一个出现的\t
与所需的字符串?
首先,您将替换制表符和非单词字符,该字符不一定是制表符,而是用四个空格替换。你不匹配每一个\t
字符分开。
将字符串开头的所有制表符替换为四个空格
你可以使用y flag:
console.log(
"\t\tHello, world!".replace(/\t/gy, ' ')
);
或不使用y
修饰符(以支持古老的浏览器)你可以使用更多的代码:
console.log(
"\t\tHello, world!\t".replace(/\t|(.+)/gs, function(match, p1) {
return p1 ? p1 : ' ';
})
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)