[英]regex replace only a part of the match
我想只替换正则表达式模式匹配的一部分字符串。 我找到了这个答案,但我没有得到它......
我如何使用替代?
我想要的例子:保留第一个slug数字,只替换其他数字
/09/small_image/09x/
> /09/thumbnail/
第1名: unknown digit
第二名: "small_image"
第3名: unknown digit + "x"
这是我到目前为止:
var regexPattern = /\/\d\/small\_image\/\d*x/;
var regexPattern = /\/\d\/(small\_image\/\d*x)$1/; ??
var result = regexPattern.test(str);
if (result) {
str = str.replace(regexPattern, 'thumbnail');
}
var input = "/09/small_image/09x/"; var output = input.replace(/(\\/\\d+\\/)small_image\\/\\d*x/, "$1thumbnail"); console.log(output);
说明:
把你想要保留的部分放在括号中,然后在替换字符串中将其称为$1
- 不要在你的正则表达式中$1
。 所以(\\/\\d+\\/)
表示匹配正斜杠后跟一个或多个数字,后跟另一个正斜杠。
(请注意,您不需要在正则表达式中转义下划线。)
跟着去
var regexPattern = /(\/\d+\/)small\_image\/\d*x/;
和
str = str.replace(regexPattern, '$1thumbnail');
首先 ,你错过了+
。 因为09
是两位数,所以你需要正则表达式来匹配一个或多个数字( \\ḑ
就是一个数字)。 这是通过\\d+
完成的
其次 ,首先要删除你匹配的所有内容。 要在之后恢复/09/
部分,您必须通过将其放入正则表达式(
... )
中的括号中来记住它,然后通过$1
在替换中引用它
还可以创建其他组,并以$2
$3
$2
引用它们......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.