これはReplace text in a websiteのスレッドのフォローアップです。ウェブサイトでテキストを置き換えるに@Paulproで与えテキスト置換JavaScriptで正規表現を使用
トップの答えは魔法のように動作しますが、私は最後の行で正規表現を使用する方法がわからない:
replaceTextOnPage('original text', 'new text')
。
私は('bingogame'
で見つかったマッチを除く)'bridge'
でテキスト'bingo'
を置き換えるために
replaceTextOnPage(/(?!bingogame)bingo/g, 'bridge')
のようなものを使用しようとしたが、スクリプト全体がそのことで台無しにされた:
function replaceTextOnPage(from, to){
getAllTextNodes().forEach(function(node){
node.nodeValue = node.nodeValue.replace(new RegExp(quote(from), 'g'), to);
});
function getAllTextNodes(){
var result = [];
(function scanSubTree(node){
if(node.childNodes.length)
for(var i = 0; i < node.childNodes.length; i++)
scanSubTree(node.childNodes[i]);
else if(node.nodeType == Node.TEXT_NODE)
result.push(node);
})(document);
return result;
}
function quote(str){
return (str+'').replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1");
}
}
replaceTextOnPage(/(?!bingogame)bingo/g, 'bridge')
誰か正規表現を正しく組み込む方法を教えてもらえますか?私の愚かさを許してください。おばあちゃんはここで話す。
引用関数は文字列を期待していますが、リテラル正規表現を渡しています。元の質問への答えでは、replaceTextOnPageに渡された2つのパラメータは両方とも文字列です。それはエラーを起こさないかもしれませんが、私は、見積もり(正規表現)の結果があなたが期待するパターンであることを三重にチェックします。 – James
このリンクには、正規表現が使用されていない場合のスクリプトの動作と、正規表現を含める場合の失敗の方法が示されています。私はそれを変更する方法がわかりません:( –