ブックマークレットを「改善」している奇妙な問題があります。ここに私のオーダーメイドの改善が最初に 2つの正規表現のJavaScriptブックマークレットの相違点
javascript : (function() {
var count = 0,
text,
regexp;
text = prompt("Search regexp:", "");
if (text == null || text.length == 0)
return;
try {
regexp = new RegExp("(" + text + ")", "i");
} catch (er) {
alert("Unable to create regular expression using text '" + text + "'.\n\n" + er);
return;
}
function searchWithinNode(node, re) {
var pos,
skip,
spannode,
middlebit,
endbit,
middleclone;
skip = 0;
if (node.nodeType == 3) {
pos = node.data.search(re);
if (pos >= 0) {
spannode = document.createElement("SPAN");
spannode.style.backgroundColor = "yellow";
middlebit = node.splitText(pos);
endbit = middlebit.splitText(RegExp.$1.length);
middleclone = middlebit.cloneNode(true);
spannode.appendChild(middleclone);
middlebit.parentNode.replaceChild(spannode, middlebit);
++count;
skip = 1;
}
} else if (node.nodeType == 1 && node.childNodes && node.tagName.toUpperCase() != "SCRIPT" && node.tagName.toUpperCase != "STYLE") {
for (var child = 0; child < node.childNodes.length; ++child) {
child = child + searchWithinNode(node.childNodes[child], re);
}
}
return skip;
}
window.status = "Searching for " + regexp + "...";
searchWithinNode(document.body, regexp);
window.status = "Found " + count + " match" + (count == 1 ? "" : "es") + " for " + regexp + ".";})();
だ
: 私は hereからこの例を取った - - それは表現にマッチするページ上の正規表現とハイライトテキストを取り、私はメモ帳+ +のためにJSMinを使って簡単に読み取るためにそれを再フォーマットしました強調表示、シングルクリックのための10行:javascript : (function() {
var count = 0,
regexp;
try {
regexp = /\bwho\b|\bwhom\b|\blay\b|\blie\b|\bmoot\b|\bcontinual\b|\bcontinuous\b|\benvy\b|\bjealousy\b|\benvious\b|\bjealous\b|\bnor\b|\bmay\b|\bmight\b|\bwhether\b|\bfewer\b|\bless\b|\bdisinterested\b|\buninterested\b|\bdifferent than\b|\bimpactful\b|\baffect\b|\beffect\b|\birony\b|\bironic\b|\bnauseous\b/i;
} catch (er) {
alert("Unable to create regular expression\n\n" + er);
return;
}
...
最初の作品は、第二はしていません。最初の式は、2番目の式をプロンプトにコピーするときにも機能します。
秒が実行されると、ブラウザはしばらくCPUを消費してから、スクワットを強調表示します。最初は瞬間に近い。 IE9/Chrome17/FF10では動作が異なるようです。 2番目の新しい正規表現(...)を使用しても助けにならない - 私はスラッシュ表記を使用して残りの部分を二重にする必要がなくなり、読みにくくなります。
誰かが私のミスに向かって私を指差してくれると思いますか?
regexpが有効かどうかわかりません。 '/ \ b(who | who | who | ... | nauseous)\ b/i'(外で壊れますが、もっと重要なことは、枝の周りに迷惑をかけないでください) – Flambino