Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Что можно и нужно прочитать про валидацию? (https://javascript.ru/forum/misc/8107-chto-mozhno-i-nuzhno-prochitat-pro-validaciyu.html)

Amateur 08.03.2010 13:40

Что можно и нужно прочитать про валидацию?
 
Здравствуйте.
Возник вопрос, какие статьи, учебники сайты можете посоветовать про валидацию форм или про синтаксис вообще (только прямые ссылки если можно).
Необходим разбор синтаксиса, к примеру, что означает \d (номер это я знаю), \s, $, ^[] и т.п.
Сейчас столкнулся с тем как проверить введенные данные, а именно, чтобы в начале была дата 10.12.2009 затем анг или русские буквы.
На дату прогнать смог - ^[\d+\d+\.+\d+\d+\.+\d+\d], а как добавить к этому условие, чтобы после даты обязательно был текст не знаю.


И просить помощи по таким вопросам напряг если честно - ведь знаю, что решение простое, надо только прочитать как это делается.

B@rmaley.e><e 08.03.2010 14:06

var str = '8.03.2010 русскиебуквы';

alert(str.match(/^\d{1,2}\.\d{1,2}\.\d{4} [a-zа-яё]+$/i))

Amateur 08.03.2010 16:50

если пишу так
['validate', 'Пример: 01.12.2009 (день.месяц.год) текст', function(v) {
var test = new Date(v);
return Validation.get('IsEmpty').test(v) || /^\d{2}\.\d{2}\.\d{4}\s[a-zа-яё]+$/.test(v)
}],

то небольшая заминка, - если написать 21.12.2009 текст пробел текст(т.е. поставить пробел между словами), то выдает ошибку, если пробела нет (т.е. дата, пробел, слово), то пропускает.
В чем ошибка?

subzey 08.03.2010 18:41

В html5 будет встроенная валидация, я бы советовал ознакомиться с черновиками, и сделать "костыли" заранее, чтобы потом их снять (для нужных браузеров) и наслаждаться нативной валидацией без хлопот.

Amateur 09.03.2010 11:10

это же еще будет. а как относительно моего вопроса

Цитата:

если пишу так
['validate', 'Пример: 01.12.2009 (день.месяц.год) текст', function(v) {
var test = new Date(v);
return Validation.get('IsEmpty').test(v) || /^\d{2}\.\d{2}\.\d{4}\s[a-zа-яё]+$/.test(v)
}],

то небольшая заминка, - если написать 21.12.2009 текст пробел текст(т.е. поставить пробел между словами), то выдает ошибку, если пробела нет (т.е. дата, пробел, слово), то пропускает.
В чем ошибка? Как исправить?

Amateur 09.03.2010 11:41

решил вопрос таким способом
/^(\d{2}\.\d{2}\.\d{4}\s)[\w\s]*$/.test(v)


или даже лучше так
/^(\d{2}\.\d{2}\.\d{4}\s)[(a-zA-Zа-яА-Я)\s\d]*$


сейчас надыбал странички в нете - оказывается неправильно искал.
стоит в гоогле набить regexp и вуаля.

P.S.: лично мне помогла инфа здесь, но это не единственный сайт


Часовой пояс GMT +3, время: 10:14.