如何在正斜杠前添加字符串?

时间:2019-09-26 04:57:59

标签: javascript regex string

我正在尝试在正斜杠前添加字符串,这是一种情况:

当我有一个字符串时: str = "//html:div[@id='ins_storybody']/p[2]/span[1]/h2[3]/p[1]/p[4]"

我想要预期的输出: //html:div[@id='ins_storybody']/html:p[2]/html:span[1]/html:h2[3]/html:p[1]/html:p[4]

您清楚地看到,我在正斜杠前添加html:

注意

如果没有方括号,我不想添加html:。这是另一个示例:

str = "//html:div[@id='ins_storybody']/p/span[1]/h2/p[1]/p"

预期输出:

str = "//html:div[@id='ins_storybody']/p/html:span[1]/h2/html:p[1]/p"

如您所见,如果没有html:,我不会添加[1] or []

我尝试使用此逻辑:

str = "//html:div[@id='ins_storybody']/p[2]/span[1]/h2[3]/p[1]/p[4]"
var htmlDOM = ['p', 'span', 'h1', 'h2', 'h3', 'h4']

for(var i=0; i<htmlDOM.length; i++) {

    q = str.includes('[');

    if (q) {
        strSlice = str.indexOf(htmlDOM[i]);
        newstr = str.slice(0,strSlice) + 'html:' + str.slice(strSlice);
    } else {
        newstr = str;
    }

    console.log(newstr)
}

但是看起来,这是一次又一次的迭代循环,似乎并不完美。

将被帮助!

1 个答案:

答案 0 :(得分:0)

您可以尝试使用此正则表达式模式,该模式检查/后面没有html:,但后面必须跟any word character followed by [

\/(?!html:)(?=\w*\[)

enter image description here

let stringAdder = (str) => str.replace(/\/(?!html:)(?=\w*\[)/gi,"/html:")

console.log(stringAdder("//html:div[@id='ins_storybody']/p[2]/span[1]/h2[3]/p[1]/p[4]"))
console.log(stringAdder("//html:div[@id='ins_storybody']/p/span[1]/h2/p[1]/p"))