如何在正则表达式中创建一个具有匹配变量和整数的替代字符串?

这是我要解决的两个示例。

1)... by,Cheese / Night%20Out-Now,2 ...

2)... by,Cheese / 2 ...

这是我的正则表达式尝试

var re = /Cheese\/([\-\%_0-9a-z]+)?(,)?[0-9]+/i;
var subst = 'Cheese/$1$25';

var str1 = '...by,Cheese/Night%20Out-Now,2...';
var str2 = '...by,Cheese/2...';

var result1 = str1.replace(re, subst);
var result2 = str2.replace(re, subst);


这是我想要的结果

1)... by,Cheese / Night%20Out-Now,5 ...

2)...作者,Cheese / 5 ...

沙盒

https://regex101.com/r/jT1tY6/3

最佳答案

它似乎已经起作用。您可以在此处使用一个可选组来修改正则表达式。

var re = /(Cheese\/(?:[\w%-]+,)?)[0-9]+/i
var subst = '$15';

10-06 03:48