簡體   English   中英

只匹配javascript正則表達式中方括號中的數字,而不匹配上一個單詞

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM