此代码:
var value = 'one.two[0]["three.four"]';
console.log(value.split(/(?:\.)|(?=\[")/));
生成以下数组:
0: one
1: two[0]
2: ["three
3: four"]
如何修改它以排除引号内的点? 我想得到这个输出:
0: one
1: two[0]
2: ["three.four"]
答案 0 :(得分:0)
您可以在.
之后添加否定前瞻,以在引号内添加"排除点"逻辑。我们忽略了开头的引用并向前看,看看我们是否在引用的字符串中。 (我们在这里假设不包含像转义引号\"
这样的任何奇怪内容)
var value = 'one.two[0]["three.four.five"]';
console.log(value.split(/\.(?![\w.]*")|(?=\[")/));
答案 1 :(得分:-1)
我认为您可以尝试使用以下组合:
负面的背后隐藏
/(?<!not )foo/
符合条件:
不是foo而是 foo
和否定前瞻
/foo(?!bar)/
匹配:
foobar foo baz
此致