所以我有这个脚本,我用来改变JS中的文本节点内容。在Greasemonkey中使用这个脚本:
(function() {
var replacements, regex, key, textnodes, node, s;
replacements = {
"facebook": "channelnewsasia",
"Teh": "The",
"TEH": "THE",
};
regex = {};
for (key in replacements) {
regex[key] = new RegExp(key, 'g');
}
textnodes = document.evaluate( "//body//text()", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
for (var i = 0; i < textnodes.snapshotLength; i++) {
node = textnodes.snapshotItem(i);
s = node.data;
for (key in replacements) {
s = s.replace(regex[key], replacements[key]);
}
node.data = s;
}
})();
哪个效果很好。
除了我的问题,我正在尝试将值0更改为75.但是它也会更改页面中包含在日期中的其他0,例如今天的日期。
这不是我想要的。我只想让它改变自己的0。我该怎么做?
感谢您的帮助。
答案 0 :(得分:0)
嗯,你需要正则表达式。您的脚本支持正则表达式,您只需将其放在所需替换列表中即可。
匹配单个零的正则表达式如下所示:(?:[^0-9]|^)(0)(?:[^0-9]|$)
。它的工作原理是断言非数字必须在零之前/之后 - 或者字符串开头/结尾。
您可以将其添加到替换列表中:
replacements = {
"(?:[^0-9]|^)(0)(?:[^0-9]|$)": "75",
};
或者,如果零总是用空格分隔,请使用以下表达式:\b0\b
您的代码备注:
(
,[
或.
等字符。