Цитата:
/^(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, время: 06:41. |