繁体   English   中英

Javascript:用标记包装匹配的正则表达式

[英]Javascript: wrap matched regex with tags

我试图用标签将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> 

我进行了很多搜索,但是无法弄清楚为什么我正在使用的此特定正则表达式会发生这种情况。

使用当前的正则表达式,您可以简单地使用匹配的子字符串$&

 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是匹配的子字符串(对应于$&。):

 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); 

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

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

括号形成这样的组。 这些组在模式中从左到右编号。

当您意识到这一点时,您可能会面无表情,但是您的正则表达式不包含要引用的$ 1捕获组。

希望可以解决此问题:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM