[英]Javascript Regex Match Capture is returning whole match, not group
[英]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.