JavaScriptで文字列の置換に取り組んでいまして、正規表現の書き方でわからない部分があります。宜しくお願い致します。
まず以下str
が与えられます。
JavaScript
1var str = '残す<iframe width="560" src="http://example/abc" frameborder="0"></iframe>残す';
ここから、
<iframe src="指定URL"></iframe>
を削除して
残す残す
を得たいのですが、私の正規表現は何が間違っているでしょうか?
正規表現は次の通りです。
javascript
1// iframeのsrcがこのurlであるiframeのみを削除したい 2var url = "http://example/abc"; 3// 削除を実行 4var result = str.replace(new RegExp(/<iframe(.+)?\ssrc=("|') + url + ("|')(.+)?>(.+)?</iframe>/g), ''); 5// 結果をコンソールへ表示 6console.log(result); // -> '残す残す' という文字列を得たい
↓KojiDoi様に「url」の連結がおかしいとご指摘頂き、以下に修正しました
// iframeのsrcがこのurlであるiframeのみを削除したい var url = "http://example/abc"; // 削除を実行 var obj = new RegExp( `<iframe(.+)?\ssrc=("|')` + url + `("|')(.+)?>(.+)?</iframe>`, 'g'); var result = str.replace( obj, '' ); // 結果をコンソールへ表示 console.log(result); // -> '残す残す' という文字列を得たい
正規表現は次の意味を考えて書きました。
<iframe(.+)?
<ifame の次に何らかの文字列があってもなくてもいい
\s
src の手前には必ずスペースがある
src=("|') + url + ("|')
src の値は指定の url で、ダブルクオートまたはシングルクオートで囲まれている
(.+)?>
src 以外の文字列があってもなくてもいい
(.+)?
iframe タグの中には文字列があってもなくてもいい
</iframe>
iframeの閉じタグがある
/g
urlが変数なのでこのオプションが必要
回答2件
あなたの回答
tips
プレビュー