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, '.')
删除反斜杠。
我正试图想出一个捕获以下内容的正则表达式:
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, '.')
删除反斜杠。