Javascript:将匹配的正则表达式与标签包装在一起

时间:2016-12-25 14:56:13

标签: javascript regex replace

我试图用标签围绕middleRsults中的日期:

var middleRsults = "95.00      04/07/15    aaaa  10/02/15 ";
var regex =/\d{2}\/\d{2}\/\d{2}/g;
var x= middleRsults.replace(regex,"<b>$1</b>")

我想得到什么:

  95.00      <b>04/07/15</b>    aaaa  <b>10/02/15</b> 

相反,我实际得到的是:

95.00      <b>$1</b>    aaaa  <b>$1</b> 

我经常搜索,但无法弄清楚为什么我正在使用这个特定的正则表达式。

3 个答案:

答案 0 :(得分:3)

使用当前的正则表达式,您只需使用匹配的子字符串$&

var middleRsults = '95.00      04/07/15    aaaa  10/02/15 ',
    regex = /\d{2}\/\d{2}\/\d{2}/g,
    x = middleRsults.replace(regex, '<b>$&</b>');

console.log(x);

或者,对于更复杂的情况,您可以将函数指定为参数,其中match是匹配的子字符串(对应于$&amp; above。):

var middleRsults = '95.00      04/07/15    aaaa  10/02/15 ',
    regex = /\d{2}\/\d{2}\/\d{2}/g,
    x = middleRsults.replace(regex, match => `<b>${match}</b>`);

console.log(x);

答案 1 :(得分:1)

您需要捕获组才能使用$n替换:

var regex =/(\d{2}\/\d{2}\/\d{2})/g;

括号形成这样一个群体。这些组在模式中从左到右编号。

答案 2 :(得分:1)

当你意识到这一点时,你可能会面对手掌,但你的正则表达式并不包含1美元的捕获组。

这应该有希望解决它:

var regex = /(\d{2}\/\d{2}\/\d{2})/g;