这真的很难做到这一点(我的意思是,它太宽),但我建议你做的是,在这几个步骤:
- 首先你应该匹配所有URL,并将它们存储在某些阵列(例如
var urls = [];
)
- 也然后替换一些独特的字符序列的所有URL,这是不是一定能在浏览器的内容(例如
~~~~~
)
- 然后做你的clasical代替,像
document.body.innerHTML = document.body.innerHTML.replace(/word/gi, "newword");
- 最后匹配新REPL aced浏览器的内容全部是你的特色字符序列(
~~~~~
),并用存储在你的数组中的URL(urls
)以相同的顺序将它们替换回来。
匹配的网址:
关于匹配的网址,你需要匹配的URL的好正则表达式。这很难做到。见here,here和here:
......几乎所有的东西是一个有效的URL。有 是 拆分它的一些标点规则。如果没有任何 标点符号,您仍然有一个有效的 网址。
仔细检查RFC,看看您的 是否可以构建“无效”URL。 规则非常灵活。
例如:::::
是一个有效的URL。 路径是":::::"
。一个漂亮的 愚蠢的文件名,但一个有效的文件名。
另外,/////
是有效的URL。网址(“主机名”)的 是""
。路径 是"///"
。再次,愚蠢。另外 有效。该URL标准化为"///"
这是等效的。
类似"bad://///worse/////"
是完全有效的。愚蠢但有效。
无论如何,这个答案并不意味着给你最好的正则表达式,而是给出你如何使用JavaScript在文本中进行字符串换行的证明。
行,所以让刚刚使用这一个:/(https?:\/\/[^\s]+)/g
再次,这是一个糟糕的正则表达式。它会有很多误报。然而这个例子足够好。
function urlify(text) {
var urlRegex = /(https?:\/\/[^\s]+)/g;
return text.replace(urlRegex, function(url) {
return '<a href="' + url + '">' + url + '</a>';
})
// or alternatively
// return text.replace(urlRegex, '<a href="$1">$1</a>')
}
var text = "Find me at http://www.example.com and also at http://stackoverflow.com";
var html = urlify(text);
// html now looks like:
// "Find me at <a href="http://www.example.com">http://www.example.com</a> and also at <a href="http://stackoverflow.com">http://stackoverflow.com</a>"
所以在和尝试:
$$('#pad dl dd').each(function(element) {
element.innerHTML = urlify(element.innerHTML);
});
我希望它会做至少有一点帮助你。
你是什么意思的“网址内的话”?还有什么你的意思是“他们坏了”?你能编辑你的问题更具体吗? – nem035
比你不能使用整个文档的innerHTML,你将需要去逐个元素并替换文本。另外,当这个词已经标记出来时,你的目标就会失败。 'w ord'将会失败。 – epascarello
*替换我浏览器中的某些单词* - 您无法替换浏览器中的单词。它可能会取代文字内容中的文字。显示您的当前内容和预期结果 – RomanPerekhrest