簡體   English   中英

JS 正則表達式匹配括號之間的最后一次出現

[英]JS Regex match last occurence between brackets

我正在嘗試從此文本中檢索最后一個括號之間的數據:

"Some text [Rewex] [1246] • 3/21/21 9PM • [**3646**]"

let id = text.match(/(\[)(?!.*\1)(.*)\]/g);

示例鏈接

我可以檢索[3646]但我只想要3646 (括號內的數據)

有沒有辦法用正則表達式來做到這一點,還是我必須用replace()來做到這一點?

匹配最后一組尖括號中最后出現的字符的正則表達式:

/(?![^\[]*\[)[^\]]+(?=\])/

https://regex101.com/r/04ZFZo/1

簡而言之,將其分解:

(?![^\[]*\[) Lookahead and greedily consume everything that is not an [ till a final [
[^\]]+       (Get ID) Everything that is not an ] one or more characters
(?=\])       till the first ] occurrence (ignored from matching).

上面將返回3646之類的字符串

一些文本 [Rewex] [1246] • 21 年 3 月 21 日晚上 9 點 • [ 3646 ] foo bar baz

相反,如果您想同時獲得12463646 ,那就更簡單https://regex101.com/r/HpfziG/1

/(?<=\[)\d+(?=\])/g

其中\d+代表:一個或多個數字
如果它是混合字符內容 - 使用[^\]]+不是 ] 一次或多次),例如:

/(?<=\[)[^\]]+(?=\])/g

暫無
暫無

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

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