Я сделал RegExp
для форматирования строки входящей даты, но с моим использованием она не работает должным образом. Я надеялся, что кто-то может объяснить, почему нет:Почему этот 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')));
Вы никогда не должны использовать кванторы на захват группы, если вы на самом деле хотите, чтобы использовать их в любом случае, так как только последнее совпадение этой группы на самом деле хранится. –