test_31331回答ポイント 80ptウォッチ 1

JavascriptのRegExpオブジェクトをStringから生成したいです。

普通は
js> a = new RegExp("abc", "i")
js> a.source # => "abc"
とすればよいのですが、
"/abc/i"のような文字列から先のようなRegExpを作ろうと思うと
js> a = new RegExp("/abc/i")
js> a.source # => "\/abc\/i"
のようになってしまいます。そこでevalを使うと
js> a = eval("/abc/i")
js> a.source # => "abc"
のようにほしいRegExpが作れることまでわかっています。
しかし、"/abc/i"のような文字列が安全かどうかわからない場合に、evalを使いたくありません。つまり
js> a = eval("while(true){alert('abc')}")
のようなことができないようにしたいです。
RegExpで、"/abc/i"の"abc"と"i"を分離させて、そこからRegExpを新たに生成するという方法もありますが、
ちょっと泥臭いので、もう少しスマートに、"/abc/i"のような文字列から、任意のコードを実行されないように、適切なRegExpを生成することができますか?

※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
ログインして回答する

ベストアンサー

その他の回答

この質問へのコメント

この質問への反応(ブックマークコメント)

質問の情報

登録日時
2007-09-09 20:58:56
終了日時
2007-09-10 18:04:15
回答条件
1人2回まで

この質問のカテゴリ

この質問に含まれるキーワード

JavaScript2781regexp46ABC440オブジェクト658js788

人気の質問

メニュー

PC版