在句点'.'上拆分字符串.

Geu*_*uis 2 javascript regex

我认为以下的基本规则只是在括号中没有包含的时段上分开,但我在将其转换为正确的正则表达式逻辑时遇到了麻烦.

我有一个像这样的字符串:

x['a.ab.w'].two['0'].three
Run Code Online (Sandbox Code Playgroud)

而我目前最好的模式是

\.(?!\w*['"]\])
Run Code Online (Sandbox Code Playgroud)

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

x['a.ab.w']
two['0']
three
Run Code Online (Sandbox Code Playgroud)

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

x['a
ab.w']
two['0']
Run Code Online (Sandbox Code Playgroud)

Pau*_* S. 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"]
Run Code Online (Sandbox Code Playgroud)

使用此RegExp拆分将为您提供类似的结果,除了""在每个之前,之后和之间有额外的空条目.

RegExp的图形

正则表达式