次のコードを使用して、このジョブを実行できます。
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
ます(など、after
MDN RegExpを参照)。それ以外の場合は、最初に、および文字列内のこれらの特殊文字をエスケープする必要があります。removed
.
[
]
?
*
before
after
removed
アップデート:
の有効な正規表現を使用してbefore
、より柔軟な検索を行うこともできます。たとえば、次のコードでは、文字「X」、「V」、および「Z」を削除しますが、 「x」、「v」、および「z」は削除しません。after
removed
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"