1

かっこの間の単語を見つけようとしています。

var str = "asdfasdfkjh {{word1}} asdf fff fffff {{word2}} asdfasdf";
var pattern = /{{\w*}}/g;
var str.match(pattern);  // ["{{word1}}","{{word2}}"]

これで取引は終了しますが、括弧付きで提供されますが、私はそれらを望んでいません。確かに、結果にネイティブの置換を使用した場合、それらを削除できます。しかし、正規表現で同じことをしたいです。

私も試しました: var pattern = /(?:{{)(\w*)(?:}})/g

しかし、私は本物を見つけることができません。私たちを手伝ってくれますか?

編集:単語が動的であるというメモを追加する必要があるかもしれません

解決:

Tim Piezcker awnser に基づいて、このソリューションを使用しました。

var arr = [],      
re = /{{(\w?)}}/g,item;

while (item = re.exec(s))
arr.push(item[1]);
4

2 に答える 2

2

ほとんどの正規表現フレーバーでは、ルックアラウンド アサーションを使用できます。

(?<={{)\w*(?=}})

残念ながら、JavaScript は後読みアサーションをサポートしていないため、使用できません。

しかし、あなたが提案した正規表現は、最初のキャプチャ グループにアクセスすることで使用できます。

var pattern = /{{(\w*)}}/g;
var match = pattern.exec(subject);
if (match != null) {
    result = match[1];
} 
于 2012-09-14T11:23:12.570 に答える
1

手っ取り早い解決策は ですが/[^{]+(?=\}\})/、先頭の中かっこが省略されていると少し混乱し、 にも一致し{word1}}ます。私の記憶が正しければ、JavaScript は後読みをサポートしていないため、この場合は少し残念です。

于 2012-09-14T11:21:58.287 に答える