【发布时间】:2017-01-03 18:24:15
【问题描述】:
我正在尝试提出一个捕获以下内容的正则表达式:
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
这很容易,但我的对象级别名称中包含句点字符。
所以我试图用句点没有反斜杠来分割一个字符串。
我希望这是有道理的。非常感谢大家。
【问题讨论】:
-
原始字符串中的反斜杠仅出现在您的符号中,而不是实际字符串中。无论您是否将它们从原始字符串表示法中删除,它都是相同的字符串。所以没有办法检测你的符号中是否有反斜杠。如果你想在你的字符串中使用它们,你需要在你的符号中加倍它们。
-
testString.split(/\s+\.\s+/)有问题吗?然后删除反斜杠(如果它们是物理反斜杠),.map(x => x.replace("\\", "")?顺便说一句,您在帖子标题中提到反向引用是否有某些原因?另外,小问题,但是String()这里的目的是什么? -
正如@trincot 指出的那样,您必须区分在字符串文字中使用反斜杠来转义字符和字符串中的实际反斜杠。字符串文字符号
var testString = "one . one\.two . one\.two\.three" ;产生一个字符串one . one.two . one.two.three。字符串文字符号var testString = "one . one\\.two . one\\.two\\.three" ;产生一个字符串one . one\.two . one\.two\.three,其中反斜杠是字符串值中的实际反斜杠字符.. -
我正在修改现有代码,因此大部分内容只是剪切/粘贴 - 您的地图建议效果很好(非常小的调整):
.map(x => x.replace(/\\/g, ""));
标签: javascript regex regex-lookarounds