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修饰符,以确保即使是具有换行符的字符串也能匹配其内容
/(\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+)/
,我不确定为什么会被否决,因为如果单元格中有任何零,接受的答案将不起作用。我不确定为什么会被否决,因为如果单元格中有任何零,接受的答案将不起作用。