Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 23.01.2012, 12:59
eca eca вне форума
Новичок на форуме
Отправить личное сообщение для eca Посмотреть профиль Найти все сообщения от eca
 
Регистрация: 02.12.2011
Сообщений: 4

Сообщение от Gvozd Посмотреть сообщение
чтобы понять чего хочет хочет ТС, и не задавать глупых вопросов не имеющих к его задаче никакого отношения?
Мы же тут не на свободную тему общаемся, а все-таки вполне конкретную задачу решаем?

eca,
Вот так, в лоб можно решить вашу задачу
function is_date_format(str) {
    var a = str.match(/^(y{4}|[dmy]{2})([^a-zA-Z0-9]+)(y{4}|[dmy]{2})([^a-zA-Z0-9]+)(y{4}|[dmy]{2})$/);
    if(a.length != 6) {
        return false;
    }
    var b = {};
    b[a[1].substring(0,1)] = 1;
    b[a[3].substring(0,1)] = 1;
    b[a[5].substring(0,1)] = 1;
    if(b.d && b.m && b.y) {
        return true;
    } else {
        return false;
    }
}
alert(is_date_format('dd-mm-yyyy'));
alert(is_date_format('dd-mm-dd'));
в общем всё верно, но регулярку надо немного поменять на
/^(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'));

но у вас более лаконично получилось, спасибо за ответ!!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с сортировкой даты rave82 jQuery 3 27.09.2011 01:35
jQuery DatePicker: формат даты при передаче в get запросе viko_rus jQuery 0 16.02.2011 13:33
Формат даты в Date picker for jQuery v4.0.4. seregarem jQuery 6 11.11.2010 16:31
Формат даты Ext.form.DateField risfek ExtJS 11 05.02.2010 06:18
RegExp & Mozilla (быстродействие) tau Общие вопросы Javascript 9 24.11.2008 16:35