我正在尝试提出一个捕获以下内容的正则表达式:

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/

10-10 03:43