[英]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.