如何用相同数量的空格替换匹配的字符

时间:2017-10-08 01:35:01

标签: javascript

我正在使用javascript并寻找可以用相同数量的空格替换匹配字符串的正则表达式。例如,我想匹配一个以show开头并结束到行尾的字符串,这是我正在使用的正则表达式/show .*$/。如果用户键入show dbs,那么我想替换为(8个空格)。如何知道匹配字符串的字符数?

2 个答案:

答案 0 :(得分:1)

我相信使用RegEx在javascript中实现此类结果的最简洁方法是匹配字符串的一部分,用空格替换其余部分并按如下方式连接两部分:

str.replace(/^(show)(.*)/, (str, p1, p2) => p1 + p2.replace(/./g, " "));

第一个替换将把开头与结尾分开,并将这些部分作为参数发送到方法中。第一部分可以不受影响,第二部分可以变成空格。

答案 1 :(得分:0)

你可以在匹配的元素上使用.length。例如

var pat = /show .*$/
'show dbs'.match(pat)[0].length

将返回8然后您可以连接返回的值或使用.replace()

'show dbs'.replace(/^/, " ".repeat(8)) //we got 8 from the length property

注意:如果有多个匹配项,则必须循环使用