[英]Match only digits in square brackets in a javascript regex without matching previous word
我在javascript中使用了以下正则表达式。 我正在尝试仅匹配字符串中方括号内的第一个数字,因为我必须替换它。 这是我的代码。
var str = 'dgt_gallery_item[3][type]';
var res = str.match(/^\w+\[(\d+)\]/g);
var rep = str.replace(/^\w+\[(\d+)\]/g, 5 + 1);
这个想法是从1个或多个字母数字字符开始,然后是[,然后开始捕获1个或多个数字,然后是]。
我检查了正则表达式101 ,我的代码看起来正确,但是当我在浏览器中对其进行测试时,它也与第一个单词匹配。 我该如何跳过呢?
您可以使用此正则表达式:
var rep = str.replace(/(?!\[)\d/, (5+1));
解释:
(?!\[) # the number must be preceded by one '[' character
# without taking it
\d # takes a one digit number ..
# you can use '\d+' to multiple digits number
Javascript正则表达式引擎不支持“向后看”,因此您需要在此处进行一些调整:
var str = 'dgt_gallery_item[3][type]';
var res = str.match(/(^\w+)\[(\d+)\]/g);
var rep = str.replace(/(^\w+)\[(\d+)\]/g, function(combinedMatch, pattern1, pattern2) {
return pattern1 + "[" + 6 + "]";
});
输出:dgt_gallery_item [6] [type]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.