|
|
|
| Здравствуйте!
пишу функцию проверки полей формы на js
function valid (i,v) {
var email = /^[-A-Za-z0-9_.,]+@[-A-Za-z0-9_.,]+$/;
var login = /^[-A-Za-z0-9_.,]+$/;
var password = /^[-A-Za-z0-9_.,#№@]+$/;
var text = /^-ЁёЇїІіА-Яа-яA-Za-z0-9_ ()#№@.]+$/;
if (email.test(i)) alert ('да');
else alert('нет');
}
|
у меня получилось 4 типа текста (email,login,passwor,text) и для каждого своё регулярное выражение
в функию valid передается два параметра - значение поля (i) и тип текста (v)
логично тип текста называть именем переменной и потом вызывать функцию v.test - но это неработает
вопрос, как тут поступить, чтобы не писать условия if else для каждого типа текста
хочется запускать одну функцию название которой будет строится из значения перемнной v | |
|
|
|
|
|
|
|
для: Дмитрий Смаль
(02.02.2010 в 12:30)
| |
function valid (i,v) {
var pats = {
email : /^[-A-Za-z0-9_.,]+@[-A-Za-z0-9_.,]+$/,
login : /^[-A-Za-z0-9_.,]+$/,
password : /^[-A-Za-z0-9_.,#№@]+$/,
text : /^-ЁёЇїІіА-Яа-яA-Za-z0-9_ ()#№@.]+$/
}
if (pats[v].test(i)) alert ('да');
else alert('нет');
}
|
| |
|
|
|
|
|
|
|
для: Дмитрий Смаль
(02.02.2010 в 12:30)
| | За попытку ограничить сверху длину и/или набор символов пароля нужно пороть на конюшне.
Пока человек не поймет, что пароль ему, как владельцу портала, не принадлежит. | |
|
|
|
|
|
|
|
для: Дмитрий Смаль
(02.02.2010 в 12:30)
| | Прочтите Remarks на http://msdn.microsoft.com/en-us/library/h6e2eb7w%28VS.85%29.aspx
Это я к тому, что надо бы заменить используемый вами синтаксис /pattern/[flags] на new RegExp("pattern"[,"flags"]) | |
|
|
|
|
|
|
|
для: АЯ
(02.02.2010 в 15:59)
| | там ничего толкового чтобы могло помочь автору нет :)
или объясните чем бы оно здесь было "в тему":) | |
|
|
|
|
|
|
|
для: sl1p
(02.02.2010 в 16:03)
| | Плохо читаете по-русски и ещё хуже - по-английски?
Бывает.
Итак, разъясняю написанное буржуинами по-английски:
Топикстартер использует один синтаксис при создании объектов RegExp.
Разработчики браузера при обработке данных, вводимых пользователем, рекомендуют использовать другой синтаксис.
А теперь разъясняю написанное мною по-русски:
Вне зависимости от способа решения конкретной проблемы топикстартера, ему следует обратить внимание на рекомендацию разработчиков. | |
|
|
|
|
|
|
|
для: АЯ
(02.02.2010 в 16:19)
| | ода, там написано что это следует использовать для динамических выражений. И нихрена о том что это лучше :) | |
|
|
|
|
|
|
|
для: sl1p
(02.02.2010 в 16:31)
| | Цитирую:
Use Syntax 1 when you know the search string ahead of time.
Use Syntax 2 when the search string is changing frequently,
or is unknown, such as strings taken from user input.
|
| |
|
|
|
|
|
|
|
для: АЯ
(02.02.2010 в 20:35)
| | search string (строка поиска) в данном контексте это паттерн (искомый образец) , а не анализируемая regexp'ом строка данных.
И в источнике объясняется причина рекомендации.
Компиляция паттерна в Syntax2 выполняется динамически, при формировании объекта regexp.
Компиляция паттерна в Syntax1 выполняется статически - в момент загрузки скрипта, когда значения вовлеченных переменных [могут быть еще не определены]... собственно, кода их и применить то никак, согласно семантике. | |
|
|
|
|
|
|
|
для: Trianon
(03.02.2010 в 04:13)
| | >"search string (строка поиска) в данном контексте это паттерн (искомый образец) , а не анализируемая regexp'ом строка данных."
Ага... "если на клетке слона прочтёшь надпись «буйвол», не верь глазам своим" (с)
"Я офигеваю, дорогая редакция" (с) | |
|
|
|
|
|
|
|
для: АЯ
(03.02.2010 в 13:23)
| | Понятно, что язык не самый строгий. Но адекватный перевод именно таков.
Если Вы заранее знаете, что ищете, применяйте синтаксис var re = /искомое/флаги;
Если искомое заранее неизвестно (и/или часто меняется, является входным параметром),
применяйте синтаксис var re = new RegExp(выражение_образца, выражение_с_флагами);
Первое быстрее работает, второе больше может.
По-моему, всё на поверхности. | |
|
|
|