[解決済み] JavaScript で動的な(変数の)文字列を正規表現として使用する
2022-05-12 21:14:06
質問
私は タグを追加したい。 を正規表現で追加したいのですが、このパターンはPHPではうまくいくのですが、JavaScriptに実装するのに苦労しています。
パターンは、(
value
が変数)です。
/(?!(?:[^<]+>|[^>]+<\/a>))\b(value)\b/is
バックスラッシュをエスケープしました。
var str = $("#div").html();
var regex = "/(?!(?:[^<]+>|[^>]+<\\/a>))\\b(" + value + ")\\b/is";
$("#div").html(str.replace(regex, "<a href='#" + value +">" + value + "</a>"));
しかし、これは正しくないようです。私はパターンをログに記録し、それはまさにそれがあるべき姿です。 何かアイデアはありますか?
どのように解決するのですか?
文字列から正規表現を作成するためには
JavaScriptの
RegExp
オブジェクト
.
また、複数回のマッチング/置換を行いたい場合は
が必要です。
加える
は
g
(グローバルマッチ) フラグ
. 以下はその例です。
var stringToGoIntoTheRegex = "abc";
var regex = new RegExp("#" + stringToGoIntoTheRegex + "#", "g");
// at this point, the line above is the same as: var regex = /#abc#/g;
var input = "Hello this is #abc# some #abc# stuff.";
var output = input.replace(regex, "!!");
alert(output); // Hello this is !! some !! stuff.
一般的な場合、正規表現として使用する前に文字列をエスケープしてください。
しかし、すべての文字列が有効な正規表現になるわけではありません。
(
または
[
. この問題を回避するには、正規表現に変換する前に文字列をエスケープすればよい。そのためのユーティリティ関数が以下のサンプルにあります。
function escapeRegExp(stringToGoIntoTheRegex) {
return stringToGoIntoTheRegex.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
}
var stringToGoIntoTheRegex = escapeRegExp("abc"); // this is the only change from above
var regex = new RegExp("#" + stringToGoIntoTheRegex + "#", "g");
// at this point, the line above is the same as: var regex = /#abc#/g;
var input = "Hello this is #abc# some #abc# stuff.";
var output = input.replace(regex, "!!");
alert(output); // Hello this is !! some !! stuff.
注:質問中の正規表現では
s
修飾子を使用していますが、これは質問の時点では存在しませんでした。
が
は存在する
-- a
s
(
ドトール
) フラグ/モディファイアをJavaScriptで使用 -- today
.
関連
-
[解決済み】Node.js Error: Cannot find module express
-
nullのプロパティinnerHTMLを読み取れません エラーメッセージ
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] JavaScriptで空文字列/未定義文字列/null文字列をチェックするにはどうすればよいですか?
-
[解決済み] JavaScriptで文字列をbooleanに変換するにはどうしたらいいですか?
-
[解決済み] JavaScriptでランダムな文字列/文字を生成する
-
[解決済み] JavaScriptで変数が文字列かどうかをチェックする
-
[解決済み] JavaScriptで二重引用符と単一引用符はいつ使うべきですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Vueはランニングライト形式のテキストを水平方向にスクロールする機能を実装している
-
vue+webrtc(Tencent cloud)ライブ機能の実践を実現するために
-
JavaScriptの配列共通メソッド解説
-
vueにおけるfilterの適用シーンについて解説します。
-
Vueの「データを聴く」原則を解説
-
[解決済み】JavaScript TypeError: null のプロパティ 'style' を読み取ることができない
-
[解決済み] TypeError: $.ajax(...) is not a function?
-
[解決済み】React - TypeError: 未定義のプロパティ 'props' を読み取ることができない。
-
[解決済み】 Uncaught TypeError : undefined のプロパティ 'replace' を読み取れない In Grid
-
フロントエンド null のプロパティ 'disabled' を読み取れない 問題が解決された