我有一段代码可以查找链接并将它们放入onClick事件中:
ddply
唯一的问题是,对于特别长的链接,它看起来可能会添加换行符,因为当我尝试单击链接时,预期的结果不会发生(我还将链接复制并粘贴到我的文本编辑器中似乎是一个换行符)。以下是链接示例:
var regex = /href\s?=\s?"\s?([\S]+)"/g;
var newText = $sanitize(text).replace(regex, "onClick=\"window.open('$1', '_system', 'location=yes')\"");
我可以运行另一个正则表达式来摆脱新链接中的换行符吗?或者我的第一个表达是否有问题?
P.S。学习正则表达式的秘诀是什么?
答案 0 :(得分:0)
您应该正确解析DOM以查找链接。假设您已加载jQuery,这很简单:
$("a").on("click", function(e){
e.preventDefault();
window.open(this.href, '_system', 'location=yes');
});
否则native DOM methods会起作用(虽然自从我使用它们以来已经过了好几年了,所以请稍等一下。)
var links = document.getElementsByTagName("a");
for (var i = 0; i < links.length; i++) {
links[i].addEventListener("click", function(e) {
e.preventDefault();
e.stopPropagation();
window.open(e.target.href, "_system", "location=yes");
});
}
答案 1 :(得分:-1)
修复此类正则表达式以匹配完整链接:href\s?=\s?"\s?([\S\s]+)"
但您应该先执行此操作:text = text.replace(/\s/, '')
或$sanitize(text.replace(/\s/, '')).replace(...)