Javascript将数字转换为文本中的超链接

Javascript将数字转换为文本中的超链接,javascript,jquery,Javascript,Jquery,我想解析一个包含数字的字符串,使每个数字都可以通过一个包含该数字的超链接单击,以便在一个表中的多个单元格中单击 我有一个字符串,可以格式化如下:12345、54321、13542或12345、54321和13542甚至Number12345等。单元格中的数字数量没有限制 我希望这些数字是超链接,比如: http://www.example.com/example?q=12345 http://www.example.com/example?q=54321 http://www.example.c

我想解析一个包含数字的字符串,使每个数字都可以通过一个包含该数字的超链接单击,以便在一个表中的多个单元格中单击

我有一个字符串,可以格式化如下:
12345、54321、13542
12345、54321和13542
甚至
Number12345
等。单元格中的数字数量没有限制

我希望这些数字是超链接,比如:

http://www.example.com/example?q=12345
http://www.example.com/example?q=54321
http://www.example.com/example?q=13542
如果能听到JS/JQuery中有任何方法可以做到这一点,我将不胜感激


谢谢

只要您的表格单元格中只有文本,就应该做到这一点:

$(document).ready(function(){
    $("#myTable td").each(function(){
        var text = $(this).html();
        text = text.replace(/(\d+)/g, '<a href="http://example.com/$1">$1</a>');
        $(this).html(text);
    });
});
$(文档).ready(函数(){
$(“#myTable td”)。每个(函数(){
var text=$(this.html();
text=text.replace(/(\d+)/g',);
$(this).html(文本);
});
});

我在JSFIDLE上设置了一个示例来测试它:。

只要您的表单元格中只有文本,这就可以做到:

$(document).ready(function(){
    $("#myTable td").each(function(){
        var text = $(this).html();
        text = text.replace(/(\d+)/g, '<a href="http://example.com/$1">$1</a>');
        $(this).html(text);
    });
});
$(文档).ready(函数(){
$(“#myTable td”)。每个(函数(){
var text=$(this.html();
text=text.replace(/(\d+)/g',);
$(this).html(文本);
});
});

我在JSFIDLE上设置了一个示例来测试它:。

我将尝试以下函数,这是对前面答案的修改

$(document).ready(function(){
    $("#myTable td").each(function(){
        var text = $(this).html();
        text = text.replace(/(\d+)/gm, '<a href="http://example.com/$1">$1</a>');
        $(this).html(text);
    });
});
$(文档).ready(函数(){
$(“#myTable td”)。每个(函数(){
var text=$(this.html();
text=text.replace(/(\d+)/gm',);
$(this).html(文本);
});
});
请注意以下差异:

  • \d+捕获贪婪匹配的任何数字(确保至少存在1个数字)
  • /gm修饰符,以确保即使是具有换行符的字符串也能匹配其内容

我将尝试以下功能,这是对先前答案的修改

$(document).ready(function(){
    $("#myTable td").each(function(){
        var text = $(this).html();
        text = text.replace(/(\d+)/gm, '<a href="http://example.com/$1">$1</a>');
        $(this).html(text);
    });
});
$(文档).ready(函数(){
$(“#myTable td”)。每个(函数(){
var text=$(this.html();
text=text.replace(/(\d+)/gm',);
$(this).html(文本);
});
});
请注意以下差异:

  • \d+捕获贪婪匹配的任何数字(确保至少存在1个数字)
  • /gm修饰符,以确保即使是具有换行符的字符串也能匹配其内容

您需要使用正则表达式函数。这是一个单行函数调用-在google上搜索“javascript正则表达式替换”。如果“Number12345”是一个有效的数字,我想了解“数字”的定义,而不仅仅是示例。“anything12345 whatever”是一个数字吗?还是字符串部分说“number”很重要?最好的方法是
/(\d+)/g
number,正如@hjpotter92所说,如果
/(\d+)/g
就可以了。您需要使用正则表达式函数。这是一个单行函数调用-在google上搜索“javascript正则表达式替换”。如果“Number12345”是一个有效的数字,我想了解“数字”的定义,而不仅仅是示例。“anything12345 whatever”是一个数字吗,或者字符串部分说“number”很重要吗?您最好的方法是
/(\d+)/g
数字,正如@hjpotter92所说,将满足于
/(\d+)/g
。太棒了。非常感谢你!一段时间前,我使用了相同的方法,您使用
*
(0次或多次出现)产生的匹配比
+
(1次或多次出现)多得多。如果您愿意,它会比
+
更混乱。另外,您的模式不接受零,但我认为这是一个简单的输入错误(尽管如果您使用
\d
而不是
[1-9]
),您可以避免这种错误)。我使用了这个答案,但我确实用正则表达式
/([1-9]*)/
替换了
/(\d+)/
。非常感谢你!一段时间前,我使用了相同的方法,您使用
*
(0次或多次出现)产生的匹配比
+
(1次或多次出现)多得多。如果您愿意,它会比
+
更混乱。此外,您的模式不接受零,但我认为这是一个简单的打字错误(尽管如果您使用
\d
而不是
[1-9]
),您本可以避免这种错误)。我使用了这个答案,但我确实用regex
/([1-9]*)/
替换了
/(\d+)/
,我不确定为什么会被否决,因为如果单元格中有任何零,接受的答案将不起作用。我不确定为什么会被否决,因为如果单元格中有任何零,接受的答案将不起作用。