Парсинг 4-числового номера версии

В расширениях Хрома принято указывать версию скрипта не более чем в виде 4 чисел, разделённых точками и величиной не более 32767 и не начинающихся с 0. Добавим в этот формат дату и минорную версию после даты.

by spmbt

CSS

body{font: 13px Verdava,sans-serif}

JavaScript

var s =['200.2013.4.1'
        ,'200.2013.04.12'
        ,'200.2013.04.123'
        ,'200.2013.4.103' //0-разд.
        ,'200.2013.4.20' //число
        ,'200.2013.4.1053' //один 0
        ,'200.2013.4.10253' //один 0
        ,'200.2013.4.10001' //число+0
        ,'200.2013.4.2003' //число+0
        ,'200.2013.4.10015' //число+0
//когда нужен 0 - разделитель:
        ,'200.2013.4.300199'
        ,'200.2013.4.30199'
        ,'200.2013.4.31199'
        ,'200.2013.4.3199'
//лидирующий 0 в дне месяца
        ,'200.2013.4.03'
        ,'200.2013.4.031'
        ,'200.2013.4.0301'
        ,'200.2013.4.00'
        ,'200.2013.12.56'
        ,'200.2013.4.501'
    ]
,rVerMinor = RegExp('(\\d+)\\.'
    +'(\\d{4})\\.'
    +'(\\d{1,2})\\.'
    +'([1-3]0(?=0)|0?[1-3]0$|[1-3][1-9](?!0)|0?[1-9])(\\d*|$)');
for(var i =0, iL = s.length; i < iL; i++){
    a = s[i].match(rVerMinor);
    console.log(s[i], a && a.slice(1))
    document.body.innerHTML += '<i style=color:#999>'+ s[i] +'</i>'
        +' =>' +(a &&'<br>&nbsp;&nbsp;&nbsp;&nbsp;v.'
        + a[1] + (a[5] ?'.'+ a[5].replace(/^0+/,''):'')
        +', дата '+ a[2] +'-'
        +(a[3].length==1?'0':'')+ a[3]
        +'-'+(a[4].length==1?'0':'') + a[4])+'<br>';
}