[英]why is this javascript regex not match second and fourth pattern?
new_data輸出為",$,2,$,4,$,"
但我期望",$,$,$,$,$,"
有人可以向我解釋原因嗎? 謝謝。
var data = ",1,2,3,4,5,"; var pattern = /,\\d,/g var new_data = data.replace(pattern, function(match){ return ",$,"; }); console.log(new_data);
因為,\\d,
吃掉了,1,
。 然后,正則表達式引擎嘗試匹配下,\\d,
由於第一圖案吃掉的,
之前它存在2
, ,2,
不會是正則表達式引擎可見。 同樣, 4
也會發生同樣的情況。
因此,您可以使用積極的前瞻。
string.replace(/,\d(?=,)/g, ",$")
這里的第二個逗號將不匹配,因為環顧四周是不會捕獲任何單個字符的斷言。
您可以通過刪除最后一個逗號來解決此問題
/,\d/g
問題是第二個逗號被第一個匹配項占用了。
例:
,1,2,3,4,5
比賽1: ,1,
,2,
不是匹配項,因為第一個逗號已被Match 1使用
數學2: ,3,
,4,
不是匹配項,因為第一個逗號已被Match 2使用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.