JS Regex匹配括号之间最后一次出现的内容



我正试图从以下文本中检索最后一个括号之间的数据:

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

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

示例链接

我可以检索[3646],但我只想要3646(括号之间的数据(

有没有一种方法可以用regex来实现这一点,或者我必须用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]•3/21/21 9PM•[3646]foo-bar-baz

如果您想同时获得12463646,那就更简单了https://regex101.com/r/HpfziG/1:

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

其中d+代表:一个或多个数字
如果是混合字符内容,请使用[^]]+(而非]一次或多次(,如:

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

相关内容

最新更新