我正在尝试提出一个捕获以下内容的正则表达式:
var testString = "one . one\.two . one\.two\.three" ;
testString.match(/(\\\.)|([^\.\[\]\s]+)/g );
或使用双反斜杠:
var testString = "one . one\\.two . one\\.two\\.three" ;
testString.match(/(\\\.)|([^\.\[\]\s]+)/g );
并会产生:
一
一二
一二三
甚至更好,消除反斜杠:
一
一二
一二三
但是我不确定如何寻找一个时期,却忽略了一个正反斜线的时期。
换句话说,我正在尝试手动构建对象路径。如果路径看起来像这样:
myObject.one.one_two.one_two_three
这很容易,但是我的对象级别名称中包含句点字符。
所以我试图用不加反斜杠的句点来分割字符串。
我希望这是有道理的。非常感谢大家。
最佳答案
如果您希望原件中包含文字反斜杠,则需要使用文字字符串表示法对它们进行转义,如下所示:
var testString = "one . one\\.two . one\\.two\\.three" ;
我会假设这就是您的意图。
如果这些部分始终用空格-点-空格分隔,则更容易将其分割。
如果这不适合您(您的通用模式并不总是这样,并且/或者您确实需要将其用作正则表达式),则可以使用此regex的变体:
/(\\\.|[^\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, '.')
删除反斜杠。关于javascript - javascript正则表达式反斜杠问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41449977/