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



我用<a>标签包装所有URL,但由于我开发应用程序风格的网站,我需要用特定属性替换所有内部URL。

所以这个:

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

应该成为

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

问题是,仅仅替换开头是不够的,因为链接本身应该用引号包装,以便以后进行javascript处理。此外,我想介绍www.domain.comdomain.com 等情况

更新

这是最简单的。我不是要求一个url检测正则表达式,我已经涵盖了所有这些。

我所需要的只是将href的前面部分更改为与当前域匹配的url,如我在示例中所示,然后用单引号将url的其余部分括起来。

我知道如何简单地将替换前部分href="http://domain.com更改为data-bind="page:,但我如何用单引号包装其余的url /page/details,或者换句话说,直到第一个双引号之前的所有文本。

这样的东西怎么样:

var newString = string.replace(/href="http://domain.com(/[^"]*)"/g, "data-bind="page: '$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,这还有一个额外的好处,那就是可以优雅地后退。

最新更新