gpt4 book ai didi

JavaScript 正则表达式获取所有数字但排除括号之间的所有数字

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:31:40 26 4
gpt4 key购买 nike

我有字符串:

123 df456 555 [ 789 ] [abc 1011 def ] [ ghi 1213] [jkl mno 1415 pqr] 161718 jkl 1920

我只需要获取数字,不要放在 方括号 [ ] 之间。我需要将所有结果数字放在 方括号 [ ] 中正确的结果应该是:

[123] df456 [555] [789] [abc 1011 def] [ ghi 1213] [jkl mno 1415 pqr] [161718] jkl [1920]

我尝试编写这样的 JavaScript 正则表达式:/(?!\[(.*?)\])((\s|^)(\d+?)(\s|$))/ig

但这似乎是错误的,积极的前瞻似乎比消极的前瞻更优先。

最佳答案

假设方括号是平衡的且未嵌套,您还可以使用否定先行来获取 [...] 之外的数字:

var str = '1232 [dfgdfgsdf 45] 1234 [ blabla 101112 ] 67890 [113141516 ] bla171819 212123';
var re = /\b\d+\b(?![^[]*\])/g;

var repl = str.replace(re, "[$&]");

console.log(repl);
//=> [1232] [dfgdfgsdf 45] [1234] [ blabla 101112 ] [67890] [113141516 ] bla171819 [212123]

此正则表达式匹配任何前面没有 ] 的数字而不匹配 [

正则表达式分解:

\b             # word boundary
\d+ # match 1 or more digits
\b # word boundary
(?! # negative lookahead start
[^[]* # match 0 or more of any character that is not literal "["
\] # match literal ]
) # lookahead end

RegEx Demo

关于JavaScript 正则表达式获取所有数字但排除括号之间的所有数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39734272/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com