我正试图从以下文本中检索最后一个括号之间的数据:
"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
如果您想同时获得1246
和3646
,那就更简单了https://regex101.com/r/HpfziG/1:
/(?<=[)d+(?=])/g
其中d+
代表:一个或多个数字
如果是混合字符内容,请使用[^]]+
(而非]一次或多次(,如:
/(?<=[)[^]]+(?=])/g