Цитата:
/^(y{4}|[dmy]{2})([^a-zA-Z0-9]+)(y{4}|[dmy]{2})([^a-zA-Z0-9]+)(y{4}|[dmy]{2})$/
так как в вашем случае 'dm-mm-yyyy' возвращает true, а 'd-m-yyyy' выдает ошибку. я уже сделал практически также, как у вас
function is_date_format(format) {
var formatRegExp = /^(d{1,2}|m{1,2}|y{4}|y{2})([^a-zA-Z0-9]+)(d{1,2}|m{1,2}|y{4}|y{2})\2(d{1,2}|m{1,2}|y{4}|y{2})$/;
if ( format.match(formatRegExp) === null ) {
throw new Error('date format regexp error');
}
var delimiter = formatRegExp.exec(format)[2];
var delimiterFirstIndex = format.indexOf(delimiter);
var delimiterLastIndex = format.lastIndexOf(delimiter);
var firstChar = format.charAt(delimiterFirstIndex-1);
var secondChar = format.charAt(delimiterFirstIndex + delimiter.length);
var thirdChar = format.charAt(delimiterLastIndex + delimiter.length);
if ( firstChar === secondChar || secondChar === thirdChar || firstChar === thirdChar ) {
throw new Error('date fomat char error');
}
return true;
}
console.log(is_date_format('d-m-d'));
но у вас более лаконично получилось, спасибо за ответ!! |
| Часовой пояс GMT +3, время: 21:42. |