【发布时间】:2016-11-11 13:09:29
【问题描述】:
我创建了一个RegExp 来格式化传入的日期字符串,但它在我的使用中没有按预期工作。我希望有人能解释为什么不这样做:
var data = [
"m_2013_01_01",
"m_2013_02_01",
"m_2013_03_01",
"m_2013_04_01"
];
// why aren't these equivalent?
// expected
console.log(data.map(datum => datum.replace(/^m_(\d+)_(\d+)_(\d+)/g, '$1-$2-$3')));
// ???
console.log(data.map(datum => datum.replace(/^m_(?:(\d+)_?){3}$/g, '$1-$2-$3')));
【问题讨论】:
-
如果你真的想以任何方式使用量词,你永远不应该在捕获组上使用量词,因为实际上只存储了该组的最后一次出现。
标签: javascript regex replace capturing-group