javascript 正则表达式反斜杠问题

javascript regex backslash issue

我正试图想出一个捕获以下内容的正则表达式:

var testString = "one . one\.two . one\.two\.three" ;
testString.match(/(\\.)|([^\.\[\]\s]+)/g  );

或者可能使用双反斜杠:

var testString = "one . one\.two . one\.two\.three" ;
testString.match(/(\\.)|([^\.\[\]\s]+)/g  );

并会产生:

one

one\.two

one\.two\.three

甚至更好,消除反斜杠:

one

one.two

one.two.three

但我不确定如何查找句点但忽略尾随反斜杠的句点。

换句话说,我正在尝试手动构建对象路径。如果路径看起来像这样:

myObject.one.one_two.one_two_three

这很容易,但我的对象级别名称中有句点字符。
所以我试图按句点 不反斜杠 .

拆分字符串

我希望这是有道理的。非常感谢大家。

如果您想让原件中包含文字反斜杠,则需要使用文字字符串表示法对它们进行转义,如下所示:

var testString = "one . one\.two . one\.two\.three" ;

我假设这就是您的意图。

如果各部分始终由 space-点-space 分隔,则仅以此分割字符串会更容易。

如果这不适合你(你的一般模式并不总是那样and/or你真的需要它是一个正则表达式),你可以使用你的正则表达式的这个变体:

/(\\.|[^\s\.\])+/g

var testString = "one . one\.two . one\.two\.three" ;
console.log('input:', testString);

var result = testString.match(/(\\.|[^\s\.\])+/g);

// Show result:
for (var match of result) {
    console.log('output:', match);
}

您可以在上面的代码中使用 match.replace(/\\./g, '.') 删除反斜杠。