powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / ПРоверка даты с помощью регулярных выражений
5 сообщений из 5, страница 1 из 1
ПРоверка даты с помощью регулярных выражений
    #35807927
LcF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день. существует проблема...
Есть проверка даты (хоть и простенькая но все же) с помощью регулярных выражений

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
if ((/^(\d\d)\.(\d\d)\.(\d\d\d\d)$/).test(d1)) 
	{
		var arr=(/^(\d\d)\.(\d\d)\.(\d\d\d\d)$/).exec(d1);
		if ((parseInt(arr[ 1 ])> 0  && parseInt(arr[ 1 ])<= 31 ) && 

(parseInt(arr[ 2 ])> 0  && parseInt(arr[ 2 ])<= 12 ) && (parseInt(arr[ 3 ])> 1995  && 

parseInt(arr[ 3 ])<= 2100 )) 
		{flag1= 1 ; }		
		else {alert("Проверьте правильность ввода1"); alert(arr[ 1 ]+"/"+arr[ 2 ]+"/"+arr[ 3 ]+"-"+d1);}
	}
	else {alert("Несоответствие формату");}
Так вот. формат даты "%d.%m.%Y"
Если вводить дату 10.02.2009 - все отрбатывается нормально. Но если поставить дату 09.02.2009 или 08.02.2009 - выдает алерт - "Проверьте правильность ввода1".
Если же ввести 07.02.2009 все опять же отрабатывается.
Сразу думал что проблема в вводе даты, т.е. если день вводиться через 0 (08,09,01) но дело не в этом.

Подскажите пожалуйста В чем может быть проблема??

Заранее благодарен
...
Рейтинг: 0 / 0
ПРоверка даты с помощью регулярных выражений
    #35807956
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Числа, начинающиеся с "0" считаются в parseInt по умолчанию восьмеричными. Т.е. в парсеИнт ещё один параметр нужно указать, а то ведь isNaN(09) - тру таки.
...
Рейтинг: 0 / 0
ПРоверка даты с помощью регулярных выражений
    #35808727
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как же остальные проверки, в частности, 29-31 февраля, 31 апреля и т.д.?
Я тут придумал небольшое ноу-хау (не тырял, сам придумал). Применительно к твоей обработке будет так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
if ((/^(\d\d)\.(\d\d)\.(\d\d\d\d)$/).test(d1)) {
	var arr=(/^(\d\d)\.(\d\d)\.(\d\d\d\d)$/).exec(d1);
	var edate = Date.parse(d1);
	if (!isNaN(edate)) {
		var date = new Date();
   		date.setTime(edate);
		var year = arr[ 2 ], month = arr[ 1 ], day = arr[ 0 ];
		if (year <  1995  || year >  2100  || month != date.getMonth() +  1  || day != date.getDate()) alert("error");
	} else alert("error");
} else alert("error");
Правда, я отрабатывал Date.parse для американского формата (YYYY.MM.DD) и он нормально работал, для DD.MM.YYYY не проверял ...
Суть метода заключается в условии month != date.getMonth() + 1 || day != date.getDate(), то есть при любых числах дата распарсится, но если, к примеру, мы введем 31.04.2009, то парсинг выдаст дату 01.05.2009 и условие не выполнится.
З.Ы. переделывал код "на лету", поэтому могут пролетать мелкие ошибки ...
...
Рейтинг: 0 / 0
ПРоверка даты с помощью регулярных выражений
    #35808953
vemax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот из моей библиотеки.
Добавляем объекту String в JScript метод

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
String.prototype.isDateStr=function()
// проверяет, является ли строка s датой в формате DD.MM.YYYY
// --------------------------------------------------------------
{
	var r=/^(\d{ 2 })\.(\d{ 2 })\.(\d{ 4 })$/;
	if (r.test(this))
	{
		var d=RegExp.$ 1 * 1 ; var m=RegExp.$ 2 * 1 ; var y=RegExp.$ 3 * 1 ;
		var test=new Date(y,m- 1 ,d);
		return (test.getFullYear()==y && test.getMonth()==m- 1  && test.getDate()==d);
	}
	else
		return false;
}

Если подключить этот код, то проверять дату можно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
var s='10.02.2009';
if (s.isDateStr())
{
  alert('OK');
  ...
}
else
{
  alert('OOPS');
  ....
}

Давно ее написал и использую во всех проектах.
Если пригодится, буду только рад :-)
...
Рейтинг: 0 / 0
ПРоверка даты с помощью регулярных выражений
    #35808971
LcF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо большое всем откликнувшимся!
авторЕсли пригодится, буду только рад :-)
Думаю пригодится)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / ПРоверка даты с помощью регулярных выражений
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]