簡體   English   中英

JavaScript正則表達式不返回匹配組

[英]JavaScript regex not returning match group

我試圖在字符串中的方括號之間獲取內容,但我的正則表達式不起作用。

RegExp: /\\[([^\\n\\]]+)\\]/g

它在regex101上返回正確的匹配組,但是當我嘗試類似'[a][b]'.match(/\\[([^\\n\\]]+)\\]/g) ,我得到['[a]', '[b]']而不是['a', 'b']

如果我迭代並執行RegExp.exec,我可以得到正確的結果,但從在線查看示例看起來我應該能夠使用String.match獲取匹配組

您正在使用String .match()方法,該方法與帶有“g”標志的正則表達式的RegExp .exec()具有不同的行為。 .match()方法為整個搜索字符串提供“g”正則表達式的所有完整匹配。

如果您將代碼更改為

/\[([^\n\]]+)\]/g.exec('[a][b]')

你會得到你期望的結果:一個數組,其中第一個條目(索引0 )是整個匹配,第二個和后續條目是正則表達式中的組。

你必須迭代以匹配所有這些:

var re = /\[([^\n\]]+)\]/g, search = "[a][b]", bracketed = [];
for (var m = null; m = re.exec(search); bracketed.push(m[1]));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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