正規表現の理解が浅く申し訳ないのですが、srcやhref属性の値としてjavascript:などが埋め込まれないようにhttpやhttpsからはじまる値を、例えば"#"置換したいと考えております。
jacasvript
1var sample1 = <a href="http://example...."></a> //変換されない 2var sample1 = <a href="https://example...."></a> //変換されない 3var sample1 = <a href=" https://example...."></a> //href="#"に変換される 4var sample1 = <a href="javascript:...."></a> // href="#"に変換される
そこで、正規表現で否定形を調べている中で否定先読があることをしりました。(?!
と)
でくくるということでがわかりました。
これを前提に以下のように処理を記載した所、適切に動作させることができませんでした。
jacasvript
1var str = '<a href="javascript:***" target="_blank">リンク先</a>'; 2str.replace(/href="(?!(http|https))"/, "#") 3console.log(str) 4//"<a href=\"javascript:***\" target=\"_blank\">リンク先</a>" 5//期待する結果↓ 6//"<a href=\"#\" target=\"_blank\">
正規表現上の否定の書き方
,グループ化の書き方
、パイプの書き方
など、まだ不安な点が多く申し訳ございませんが、問題点についてご指摘いただければ幸いです。
【追記】
正規表現の論点なので、Javascriptで記載しておりますが、実際にはサーバーサイドにおいても同様に検査をする予定ですので、その点はご放念願います。
回答1件
あなたの回答
tips
プレビュー