jQuery用URL替换字符串

时间:2009-09-12 04:34:06

标签: javascript jquery regex

在我的网站上,我有一些看起来像这样的字符串(可能是任何数字)

29-30-404-59556348

使用jQuery我想将其解析为

<a href="http://www.mysite.com/page.php?=29,30,404,59556348">Page</a>

我该怎么做?

3 个答案:

答案 0 :(得分:3)

这将搜索整个页面并替换所有数字。您可能希望指定比整个正文更紧密的搜索上下文,并且您可能希望调整正则表达式以使其匹配特定的数字模式。现在它匹配页面中的任何数字或由连字符分隔的整数序列。

// This is a simple jQuery extension to find text nodes
$.fn.textNodes = function() {
    var ret = [];
    $.each(this.contents(), function() {
        try {
        if(this.nodeType == 3) 
            ret.push(this);
        else 
            $(this).contents().each(arguments.callee);
        } catch(e) {}
    });
    return $(ret);
}

// Get all the text nodes from the body
$(document.body).textNodes().each(function() {
    // Test each text node to see if it has any numbers in it
    if(/\d/.test(this.nodeValue))
        // Remove numbers or sequences of numbers and replace with links
        $(this).replaceWith(
            this.nodeValue.replace(/\d+(?:-\d+)*/g, function(nums) {
                return '<a href="http://www.mysite.com/page.php?ids=' + nums.split('-').join(',') + '">Path</a>'; // str.split(a).join(b) is faster than str.replace(a,b)
            })
        );
});

更新:这是一个与此模式中的数字匹配的版本xx-xx-xxx-xxxxxxxx

// Get all the text nodes from the body
$(document.body).textNodes().each(function() {
    // Test each text node to see if it has our pattern of numbers in it
    if(/\d{2}-\d{2}-\d{3}-\d{8}/.test(this.nodeValue))
        // Remove sequences of numbers and replace with links
        $(this).replaceWith(
            this.nodeValue.replace(/\d{2}-\d{2}-\d{3}-\d{8}/g, function(nums) {
                return '<a href="http://www.mysite.com/page.php?ids=' + nums.split('-').join(',') + '">Path</a>'; // str.split(a).join(b) is faster than str.replace(a,b)
            })
        );
});

答案 1 :(得分:1)

如果我理解正确,你可以这样做:

function getAnchor (name, code) {
  var anchor = '<a href="http://www.mysite.com/page.php?={CODE}">'+name+'</a>';
  return $(anchor.replace('{CODE}', code.replace('-',',')));
}

用法example

$('body').append(getAnchor('Page', '29,30,404,59556348'));

答案 2 :(得分:0)

var url = "http://www.mysite.com/page.php?ids=" + string.replace("-", ",");

请注意,我已将查询字符串名称设置为ids。您可能希望这样做,以便能够在服务器端代码中更轻松地读取查询字符串值。