JavaScriptは一致したグループへの参照で置き換えますか?


228

などの文字列がありますhello _there_。私は2つのアンダースコアを交換したい<div></div>使用して、それぞれJavaScriptを。出力は(したがって)のようになりhello <div>there</div>ます。文字列には、アンダースコアの複数のペアが含まれる場合があります。

私は何を探していますはする方法ですいずれかの各試合で機能を実行し、Rubyはそれをしない方法:

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

または、一致したグループを参照できるようにすることもできます。これもルビーで実行できる方法です。

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

アイデアや提案はありますか?

回答:


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

ああ、またはあなたもできます:

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

10
JavaScriptの$1代わりに使用し\1ますか?誰かがドキュメントへのリンクを提供しますか?
daveloyall 2014年

3
replacementValue関数にすることができ、キャッチグループに基づいて異なる引数が渡されますか?すごい!
daveloyall 2014年

4
私は\ 1が働いたが、私は正規表現のバリエーション使用していますが、$ 1はしませんでした:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
JSH

1
@CalculatorFeline誰かが正規表現を置換に使用しようとしている可能性があるため、「正規表現自体」と言ってもどれが特定されない。これを行おうとする人はたくさんいるに違いありません"hello _there_".replace(/_(.*?)_/, /<div>\1<\/div>/)
スチュワート

2
関数に関するドキュメントは、developer.mozilla.org
en


7

で指定された置換文字列と置換パターン$。ここで履歴書:

ここに画像の説明を入力してください

ドキュメントへのリンク:ここ

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



注意:

$置換文字列にaを含める場合は、を使用します$$。vscodeスニペットシステムと同じです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.