如何同时替换 JavaScript 字符串中的多个单词?

How to replace more than one word in JavaScript string at a same time?

我有一个 javascript 字符串,其中包含一些代码,例如 [Hover on me](Tooltip text)。我想将此代码转换为 HTML。 [] 包含文本,() 包含工具提示文本

这就是我想要的

<div class="tooltip">Hover over me
     <span class="tooltiptext">Tooltip text</span>
</div>

该字符串包含多个工具提示代码,我需要将它们中的每一个都转换为此 HTML 代码

我在尝试什么

<p id="p">blabla [some info](tool) it is text [one](tool) [two] (tool)</p>


var text = document.getElementById('p').innerHTML;
var matches = text.match(/\[(.*?)\]/);
var final = text.match(/\((.*?)\)/);

var res = text.replace(matches[0], "<span>"+matches[1]+"</span>");
var newtext = document.getElementById('p').innerHTML = res;

var ros = newtext.replace(final[0], "<span>"+final[1]+"</span>");
document.getElementById('p').innerHTML = ros;

console.log(ros);

我知道代码很乱,但我需要一些帮助。我也在尝试其他代码,但也没有用,这里是 fiddle https://jsfiddle.net/mohitchandel/aszv8w93/10/


var text = document.getElementById('p').innerHTML;


// You may want to validate this loop better.
while( text.indexOf(')') > 0 ) {
    let a = text.slice( text.indexOf('[') + 1, text.indexOf(']') ),
        b = text.slice( text.indexOf('(') + 1, text.indexOf(')') ),
        c = `<div class="tooltip">${ a } <span class="tooltiptext">${ b }</span></div>`;

    text = text.slice( 0, text.indexOf('[') ) + c + text.slice( text.indexOf(')') + 1 );
}

这可以帮助您入门。

-- RMZ