[解決済み] JavaScriptにRegExp.escape関数はありますか?
2022-03-19 14:20:47
質問
任意の文字列から正規表現を作りたいだけなのですが。
var usersString = "Hello?!*`~World()[]";
var expression = new RegExp(RegExp.escape(usersString))
var matches = "Hello".match(expression);
そのためのビルトインメソッドはあるのでしょうか?ない場合、みんなは何を使っているのでしょうか?Rubyには
RegExp.escape
. 自分で書く必要はないような気がします。何か標準的なものがあるはずです。
解決方法は?
他の回答でリンクされている関数が不十分です。それは、エスケープするために失敗します。
^
または
$
(文字列の先頭と末尾)、または
-
文字列の中で範囲に使用されます。
この機能を使用します。
function escapeRegex(string) {
return string.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
}
一見すると不要に思えるかもしれませんが、エスケープすることで
-
(と同様に
^
この関数は、正規表現の本体だけでなく、文字クラスに挿入される文字のエスケープにも適しています。
エスケープ
/
は、後で評価するためにJavaScriptの正規表現リテラルで使用する文字のエスケープに適した関数です。
どちらをエスケープしてもデメリットがないため、より広いユースケースをカバーするためにエスケープするのが理にかなっています。
そして、そう、これが標準的なJavaScriptの一部でないことは残念な失敗です。
関連
-
[解決済み】React Uncaught Error: 対象コンテナが DOM 要素でない [重複]。
-
フロントエンド null のプロパティ 'disabled' を読み取れない 問題が解決された
-
JavaScriptのgetElementById()メソッド入門
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでメールアドレスを検証するのに最適な方法は何ですか?
-
[解決済み] jQueryの「exists」関数はありますか?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】オブジェクトからプロパティを削除する(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 Element-uiは、アイコンを追加するためのツリーコントロールノードを詳細に実装しています。
-
WeChatアプレット用ユニアプリによるグローバルシェアリング
-
vueのプロジェクトでモックを使用する方法を知っていますか?
-
Vueの「データを聴く」原則を解説
-
Vueのフィルタの説明
-
[解決済み】最大呼び出しスタックサイズ超過エラー
-
[解決済み] テスト
-
[解決済み] TypeError: $.ajax(...) is not a function?
-
フロントエンド null のプロパティ 'disabled' を読み取れない 問題が解決された
-
モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory, scandir 'D:\.... \node_modules