2

我认为以下基本规则仅在括号中未包含的句点上进行拆分,但我无法将其转换为正确的正则表达式逻辑。

我有一个这样的字符串:

x['a.ab.w'].two['0'].three

我目前最好的模式是

\.(?!\w*['"]\])

这是在 javascript 中,我正在尝试拆分示例字符串,以便它返回为

x['a.ab.w']
two['0']
three

我上面列出的正则表达式适用于x['a.ab']但当字符串的该部分中有 2 个或更多句点时失败。这种情况下的输出是:

x['a
ab.w']
two['0']
4

2 回答 2

5

我可以看到一种使用matchmap..混合的方法来做到这一点

"x['a.ab.w'].two['0'].three"
    .match(/(?:^|\.)((?:[^'.]*|'[^']*')+(?=\.|$))/g)
        // ["x['a.ab.w']", ".two['0']", ".three"]
    .map(function (e) {
        if (e.charAt(0) === '.') return e.slice(1);
        return e;
    });
        // ["x['a.ab.w']", "two['0']", "three"]

将 split 与此RegExp一起使用将为您提供类似的结果,除了""在每个之前、之后和之间有额外的空条目。

正则表达式的图形

正则表达式

于 2013-07-16T03:44:22.687 回答
2

尝试以下操作:

/\.(?![\w.]*['"\]])/

这似乎在我使用的 Regexp 测试器中有效。它也适用于我的 JSFiddle

我只是\w*改为[\w.]*

于 2013-07-16T03:31:55.580 回答