3

重複の可能性:ユーザー入力文字列を文字列から正規表現javascriptnewregexp
に変換する

私はjavascriptの正規表現に少し問題があります(私はまだjavascriptの正規表現にあまり慣れていません)。文字列内のいくつかのものを置き換えたいのですが、正規表現を書くための構文が次のようになっていない'"、次のようになっていることに気付きました。var replacedtitle = title.replace(/\[.*?\]/g, "");

これですべて意図したとおりに機能しますが、ユーザーがコードを変更せずにインターフェイスから独自の正規表現を追加できるようにしたいと思います(コードを作成していない友人のためにプライベートプロジェクトを行っているので、毎回すべてを再パッケージ化するのではなく、何か新しいものを交換する必要があるときに入力する正規表現を彼に送信するだけです)。これを行うには、xulテキストボックス(これはFirefoxアドオンですが、htmlテキストボックスの場合と同じである必要があります)で正規表現を入力すると、jsonオブジェクトに追加されて保存されます。私はこのようなことをしてみました:

var replacedtitle = "";
for(a = 0; a < regex.data.length;a++){
    replacedtitle = title.replace(regex.data[a].regex, "");
}

しかし、それは機能しません。文字列として扱われるためだと思いregex.data[a].regexますが、replace()は最初のパラメーターとして文字列を受け取らないようですよね?

私はこれについて少し不確かです、どんな助けでも大いに感謝されるでしょう。

4

3 に答える 3

13

代わりにでRegExオブジェクトを作成しnew、パターンと修飾子に文字列を指定できます。

var re = new RegExp("\\[.*?\\]", "g");
于 2012-10-03T15:20:03.270 に答える
2

文字列をパターンと修飾子に分割します。

function getRegFromString(string){

     var a = string.split("/");
     modifiers= a.pop(); a.shift();
     pattern = a.join("/");
     return new RegExp(pattern, modifiers);
}
getRegFromString("/\[.*?\]/gim");
于 2012-10-03T16:06:45.840 に答える
-2
var string = "/\[.*?\]/g";
var regex = new RegExp(string);

正常に動作します。

于 2012-10-03T15:22:00.567 に答える