JS正则表达式排除引号内的匹配

时间:2017-04-06 11:45:09

标签: javascript regex

此代码:

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"]

2 个答案:

答案 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

此致