###前提・該当のソースコード
正規表現で文字列1文字列2
が残るコードを実装しました。
js
1var str = '文字列1<iframe width="560" src="http://example/abc" frameborder="0"></iframe>文字列2'; 2// srcがこのurlであるiframeだけを削除する 3var url = "http://example/abc"; 4var obj = new RegExp(`<iframe.*?\ssrc=["']` + url + `["'](.*)?>.*</iframe>`) 5var result = str.replace( obj, '' ); 6console.log(result); // -> '文字列1文字列2'
###求めている結果
しかし上記、すべてのiframeが削除されてしまいますが、最初だけでいいのです。
例えばstr
を次に変えて、文字列1文字列2<iframe width="560" src="http://example/abc" frameborder="0"></iframe>文字列3
を残したいです。
js
1var str = '文字列1<iframe width="560" src="http://example/abc" frameborder="0"></iframe>文字列2<iframe width="560" src="http://example/abc" frameborder="0"></iframe>文字列3';
###考えた原因と対策
おそらくですが、.*
によって、最後の</iframe>
まですべてを一致としてしまうのではないかと思っています。
なのでこの部分を下記のように変えてみました。
js
1var obj = new RegExp(`<iframe.*?\ssrc=["']` + url + `["'].*>.*</iframe>`); 2// ↓下記のように変えてみました 3var obj = new RegExp(`<iframe.*?\ssrc=["']` + url + `["'].*>^(?!.*</iframe>)</iframe>`);
^(?!.*</iframe>)
で</iframe>という文字を含まない
を表現したつもりです。
参考:https://uxmilk.jp/50674
しかし何も削除されなくなってしまいました。。
どうすれば求めている結果になるでしょうか?
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/25 02:35
2021/01/25 02:42
2021/01/25 05:39 編集
2021/01/25 06:02