2016-05-27 3 views
0

私はHTMLコード内のすべてのリンクと一致する正規表現を持っていますが、テキストまたはそのいずれかに特定のパターンを持つリンク属性。実際、パターン${whatever_text}を持つリンクのみを照合したいと思います。javascriptで特定のパターンのすべてのリンクに一致させる

私は物事を明確にするためにあなたに例をあげる:

var text = '<a href="/foo">foo</a> some sample text <a href="${bar}">bar</a>'; 
 
var pattern = /<a (.+?)<\/a>/igm; 
 
var matches = text.match(pattern); 
 
document.write(matches);

を以前の正規表現は、テキスト内の2つのリンクを一致しますが、私は唯一の一致する正規表現を構築する必要があります最後のリンク。私は、次の正規表現/<a (.*?\$\{.+?\}.*?)<\/a>/igmを試してきましたが、最初のリンクの開始タグと2番目のリンクの終了タグの間のすべてのものと一致します。

var text = '<a href="/foo">foo</a> some sample text <a href="${bar}">bar</a>'; 
 
var pattern = /<a (.*?\$\{.+?\}.*?)<\/a>/igm; 
 
var matches = text.match(pattern); 
 
document.write(matches);

おかげで事前に!

+0

正規表現を使用しないでください。 DOMを使用します。 – zzzzBov

+0

HTMLコードはフォームフィールドのWYSIWYGエディタにあるので、私はこれをDOMに使うことはできないと思います。また、私はDOMを使ってこれを行う簡単な方法を見ることができません。 ) – beni0888

+0

['(] href =" \ $ {。*?} "。*?>。*?<\/a>)'](https:// regex101)を教えてください。 com/r/oU1pB4/1) – Tushar

答えて

1

あなたはこの負の先読み正規表現を使用することができます

/<a (?:(?!<a[^>]*>).)*?\$\{[^}]+\}.*?<\/a>/ 

RegEx Demo

(?:(?!<a[^>]*>).)*?たちはマッチングで<aを貼り付けます後、私たちは別の<a..>と一致していないことを確認するための否定先読みです。

+1

ありがとうございました!!!それは私が必要としたものです – beni0888

関連する問題