Javascript заменить со ссылкой на группу?

У меня есть строка, например hello _there_. Я бы хотел заменить два символа подчеркивания <div> и </div> соответственно, используя JavaScript. Результат будет (поэтому) выглядеть как hello <div>there</div>. Строка может содержать несколько пар подчеркиваний.

То, что я ищу способ либо запустить функцию на каждый матч, то, как Рубин делает это:

"hello _there_".gsub(/_.*?_/) { |m| "<div>" + m[1..-2] + "</div>" }

Или иметь возможность ссылаться на соответствующую группу, опять же, как это можно сделать в рубине:

"hello _there_".gsub(/_(.*?)_/, "<div>\\1</div>")

Любые идеи или предложения?

Ответ 1

"hello _there_".replace(/_(.*?)_/, function(a, b){
    return '<div>' + b + '</div>';
})

О, или вы также можете:

"hello _there_".replace(/_(.*?)_/, "<div>$1</div>")

Ответ 2

Вы можете использовать replace вместо gsub.

"hello _there_".replace(/_(.*?)_/g, "<div>\$1</div>")

Ответ 3

Для строки замены и шаблона замены, как указано в $ здесь, резюме:

enter image description here

ссылка на документ: здесь

"hello _there_".replace(/_(.*?)_/g, "<div>$1</div>")



Замечания:

Если вы хотите иметь $ в строке замены, используйте $$. То же, что и в системе сниппетов vscode.