我正在使用javascript并寻找可以用相同数量的空格替换匹配字符串的正则表达式。例如,我想匹配一个以show
开头并结束到行尾的字符串,这是我正在使用的正则表达式/show .*$/
。如果用户键入show dbs
,那么我想替换为(8个空格)。如何知道匹配字符串的字符数?
答案 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
注意:如果有多个匹配项,则必须循环使用