我试图想出一个捕获以下内容的正则表达式:
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.two
one.two.three
但我不确定如何寻找一段时间,但却忽略了一个落后于反斜杠的时期。
换句话说,我正在尝试手动构建对象路径。如果路径看起来像这样:
myObject.one.one_two.one_two_three
这很容易,但我的对象级别名称中包含句号字符 所以我试图按句号拆分字符串,而不是反斜杠。
我希望这是有道理的。非常感谢你们。
答案 0 :(得分:1)
如果您希望原始文件中包含文字反斜杠,则需要使用文字字符串表示法对它们进行转义,如下所示:
var testString = "one . one\\.two . one\\.two\\.three" ;
我会假设这是你的意图。
如果部件始终用空格点空间分隔,则更容易将字符串拆分。
如果这不适合你(你的一般模式并不总是那样和/或你真的需要它作为正则表达式),你可以使用正则表达式的这个变体:
/(\\\.|[^\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, '.')
删除反斜杠。