0

次のような文字列から特定の単語を抽出するためにRegExpを使用しています。

<div class = ''></div>class class 

私の現在のRegExpステートメントは次のとおりです。

/(<)[^(>)]*(;| |'|&quote;)(class)?( |'|&quote;|=)/gi

この例では、「クラス」という単語と一致させたいのですが、その前後に特定の文字(またはアンパサンド)がある場合に限ります。このステートメントは次のように一致します。

<div class 

元の文字列から、これをreplaceメソッド(「class」があった場所にテキストを挿入するため)で使用していて、その周りに他の文字を残したいのですが、この一致をselect(replace)のみにトリミングする方法はありますか? )「クラス」という単語(この場合)?

それとも、これを行うためのより良い方法はありますか?前もって感謝します。

4

2 に答える 2

1

次のコードを使用して、このジョブを実行できます。

var removeSubstring=(function(){
    var fn=function($0,$1,$2,$3){return $1+$3;};
    return function(str,before,after,removed){
        var rg=new RegExp("("+before+")("+removed+")("+after+")","gi");
        return str.replace(rg,fn);
    };
})();

var str="<div class = ''></div>class class <div class ";
var before="<div ";
var after=" ";
var removed="class";

removeSubstring(str,before,after,removed);
// <div  = ''></div>class class <div  

ただし、文字列に特別な正規表現形式の文字が含まれていないことを確認する必要がありbeforeます(など、afterMDN RegExp参照)。それ以外の場合は、最初に、および文字列内のこれらの特殊文字をエスケープする必要があります。removed. [ ] ? *beforeafterremoved

アップデート:

の有効な正規表現を使用してbefore、より柔軟な検索を行うこともできます。たとえば、次のコードでは、文字「X」「V」、および「Z」を削除しますが、 「x」「v」、および「z」は削除しません。afterremoved

var str="qXd ezrwsvrVa etxceZd";
var before="q|w|e|r";
var after="a|s|d|f";
var removed="z|x|c|v";

removeSubstring(str,before,after,removed);
// "qd ezrwsvra etxced"

サブストリングを別のストリングに置き換える必要がある場合は、次の関数を使用できます。

function replaceSubstring(str,before,after,removed,inserted){
    var rg=new RegExp("("+before+")("+removed+")("+after+")","gi");
    return str.replace(rg,function($0,$1,$2,$3){
        // $1 is searched "before" substring
        // $2 is searched "removed" substring
        // $3 is searched "after" substring
        return $1+(inserted||"")+$3;
    });
};


var str="qXd ezrwsvrVa etxceZd";
var before="q|w|e|r";
var after="a|s|d|f";
var removed="z|x|c|v";
replaceSubstring(str,before,after,removed,"DDDD")
// "qDDDDd ezrwsvrDDDDa etxceDDDDd"
于 2012-08-24T12:27:10.937 に答える
0

これを試して:

var match = /your regex here/.exec(myString)
match = match.replace('class','')
于 2012-08-24T11:38:52.467 に答える