簡體   English   中英

為什么這個javascript正則表達式不匹配第二和第四種模式?

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

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