用HTML中的链接替换url
Replacing urls with links in HTML
我有一些HTML进来:
<img src="http://www.example.com/image.jpg" />
<a href="http://www.example.com">Example.com</a>
http://www.example.com
在另一个线程我发现这个正则表达式:
var exp = /('b(https?|ftp|file):'/'/[-A-Z0-9+&@#'/%?=~_|!:,.;]*[-A-Z0-9+&@#'/%=~_|])/i;
问题是它也改变了img和a标签:
<img src="<a href="http://www.example.com/image.jpg">http://www.example.com/image.jpg</a>" />
<a href="<a href="http://www.example.com">http://www.example.com</a>">Example.com</a>
<a href="http://www.example.com">http://www.example.com</a>
有什么想法来处理这个快速而不必解析HTML?
使用regex进行html处理会引起类似的错误,而不是尝试使用regex进行dom处理,如
var string = '<img src="http://www.example.com/image.jpg" /> '
<a href="http://www.example.com">Example.com</a>'
http://www.example.com';
var $tmp = $('<div />', {
html: string
});
var exp = /('b(https?|ftp|file):'/'/[-A-Z0-9+&@#'/%?=~_|!:,.;]*[-A-Z0-9+&@#'/%=~_|])/i;
$tmp.contents().contents().addBack().each(function() {
if (this.nodeType == Node.TEXT_NODE && exp.test(this.nodeValue)) {
$(this).replaceWith(function() {
return $('<div />', {
html: this.nodeValue.replace(exp, '<a href="$1">$1</a>')
}).contents()
})
}
});
var processed = $tmp.html();
snippet.log(processed)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
最后遍历HTML。这不是最快的解决方案,但有效:
$(id).find('*').each(function(k,v)
{
if (v.nodeName == 'A')
{
// do stuff
}
}
相关文章:
- 替换url中变量的值
- hashbang之后的角度替换url
- 为出版商学术界登录替换url中的域
- 重定向javascript,替换url
- javascript替换url链接循环
- 如何替换URL的一段并重新加载页面
- 单击时尝试替换URL中的值
- 替换 URL 字符串中的撇号时出现问题
- 在 javascript 中替换 URL 中的两个元素
- 使用 jQuery 替换 URL 中的值
- 为什么添加而不是替换 URL 哈希
- 使用 regEx 替换 url 之间的值
- JQuery 根据 HTML 下拉列表选择查找并替换 URL 中的查询字符串
- 替换URL'中的字符串查询;s与Javascript(有条件)
- 替换URL字符串中的括号
- Regex-用图像标记替换URL
- 用Javascript Regex替换url中的子目录
- JavaScript字符串替换URL参数
- 使用正则表达式替换url中的字符串
- 如何替换URL字符串中的字符