Javascript - 在引号正则表达式中包装链接

时间:2013-06-27 19:31:22

标签: javascript regex quotes

我正在使用<a>标记包装所有网址,但由于我开发了应用程序样式的网站,因此我需要使用特定属性替换所有内部网址。

所以这个:

href="http://domain.com/page/details"

应该成为

data-bind="page: '/page/details'"

问题是,仅仅替换开头是不够的,因为链接本身应该用引号括起来供以后的javascript处理。另外,我想介绍www.domain.comdomain.com

等情况

更新

它尽可能简单。我不是要求网址检测正则表达式,我已经涵盖了所有这些。

所有我需要的是使用与我在示例中显示的当前域匹配的url更改href的前部,然后用单引号包装其余的url。

我知道如何简单地将替换前部href="http://domain.com更改为data-bind="page:,但如何将剩余的剩余网址/page/details换行,或者换句话说,直到第一次双引号为止所有文本,带一个单引号。

2 个答案:

答案 0 :(得分:2)

这样的事情怎么样:

var newString = string.replace(/href="http:\/\/domain\.com(\/[^"]*)"/g, "data-bind=\"page: '$1'\"");

答案 1 :(得分:1)

而不是更改链接,使链接处理程序更智能。

保留链接:

<a href="http://example.com/path/to/thing">what</a>

但改变他们的点击处理程序:

$('a').click(function() {
    url = $(this).get(0).pathname;
    console.log(url); // outputs "/path/to/thing"
    if (on the app page) {
        // do stuff
        return false;
    }
    else {
        // on the browser page
    }
});

如果禁用了javascript,这还有一个额外的好处就是优雅地退回。