将字符串中的数字转换为链接

时间:2015-08-05 21:28:23

标签: javascript jquery replace

我需要你的帮助。 我正在尝试制作一个用于查找带有> x位数的数字的用户脚本,并将它们转换为链接。 链接的结构类似于 http://domain.com/[number]

到目前为止,我已经设法找到链接,将它们放在一个数组中,但是我一直试图用链接替换文本中的数字。

$("p").each(function(){

    var string = $(this).text();
    var getNum = string.match(/(\d+)/g);

    for(i=0; i<getNum.length; i++){
        if(getNum[i].length >= 5){



            //for testing the array
            $('#result').append(i+" : " + getNum[i]+" ");
        };
    }

});

任何建议/解决方案?

https://jsfiddle.net/9qt6z3x8/4/

3 个答案:

答案 0 :(得分:2)

听起来你正试图内联替换它们,我已经更新了你的小提琴here,但你只需要正则表达式并立即用链接替换它:

$("p").each(function(){
    $(this).html($(this).html().replace(/(\d{5,})/g, '<a href="http://domain.com/$1">$1</a>'));
});

修改

借助@DavidThomas

更有效地使用jquery库
$('p').html(function(index, html){
    return html.replace(/(\d+)/g, '<a href="http://domain.com/$1">$1</a>');
})

答案 1 :(得分:2)

更简单的解决方案......

document.body.innerHTML = document.body.innerHTML.replace(/\b(\d{5,})\b/g, '<a href="http://domain.com/$1">$1</a>');
<p> this is a 1234 numbers 123455 test 11234343323</p>

答案 2 :(得分:0)

我相信这就是你的目标。需要使用带有<p>标记的新标记替换<a>内的文字。

&#13;
&#13;
	$("p").each(function(){
        var string = $(this).text();
		var getNum = string.match(/(\d+)/g);
        
		for(i=0; i<getNum.length; i++){
			if(getNum[i].length >= 5){
                
                //for testing the array
                $('#result').append(i+" : " + getNum[i]+" ");
                
                // replace with link
                string = string.replace(getNum[i], 
                  '<a href="domain.com/'+getNum[i]+'">'
                   +getNum[i]+'</a>');
			};
        }
        
        $(this).html(string);
			
	});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p> this is a 1234 numbers 123455 test 11234343323</p>

<div id="result">array= </div>
&#13;
&#13;
&#13;