将换行符放在链接中的正则表达式

时间:2017-04-13 19:17:06

标签: javascript regex dom

我有一段代码可以查找链接并将它们放入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。学习正则表达式的秘诀是什么?

2 个答案:

答案 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]+)"

Demo

但您应该先执行此操作:text = text.replace(/\s/, '')

$sanitize(text.replace(/\s/, '')).replace(...)