2

今、私はこれを置き換えています:

var newcontent = newcontent
                .replace(/<div id="container_gallery_"(.*)><\/div>/gi,"");

の代わりに変数を渡すことは可能<div id="container_gallery_ですか?

じぶんの

function delAlbum(a) { }

この置換を実行し、変数a

-編集-

提供された情報に感謝します!抜け毛が少ない!

4

3 に答える 3

2

省略形ではなく、オブジェクト表記を介して RegExp を構築できます。

function delAlbum(a) {
    var regex = new RegExp( a + '"(.*)><\/div>', 'gi' );

    var newcontent = newcontent
                    .replace( regex,"");
    // ...
}
于 2013-02-16T09:23:52.940 に答える
2

変数を正規表現に入れるには、正規表現を文字列として作成し、次のように RegExp オブジェクト コンストラクターに渡す必要があります。

var target = a + "(.*)></div>";
var newcontent = newcontent.replace(new RegExp(target, "gi"), "");

一般に、制御されていない HTML で正規表現マッチングを行うことはお勧めできません。また.innerHTML、正規表現を破る合法的な HTML の方法がたくさんあるため、プロパティから取得した HTML で正規表現マッチングを行うことは本当にお勧めできません。

于 2013-02-16T09:24:24.863 に答える
0

他のレスポンダーが言ったように、そのために RegExp コンストラクターを使用できます。しかし、あなたがそれをしている間、あなたはそれを取り除くべきです(.*). が持っている他の属性を消費することを意図していると仮定すると<div>、 を使用する方が良いでしょう[^<>]*。これにより、一度に 1 つの要素に一致が制限されます。(.*)究極の脱出アーティストです。

しかし、私は興味があります: <div id="container_gallery_"HTML 要素の最初の部分を含めて、本当に のような文字列を渡していますか? それとも、属性の値の置換のみを渡していますか (例: container_gallery_)? その場合は、次の正規表現が役に立ちます。

var regex = new RegExp('<div\s+"` + (your var) + '"[^<>]*></div>', 'gi' );

I'm assuming the `id` attribute is always in the first position which generally not a safe assumption, but it makes the regex a lot easier, both to write and to read. ;)

また、渡された文字列に HTML 属性で不正な文字がないかチェックすることを忘れないでください。

于 2013-02-16T12:59:27.527 に答える