Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   КАк проверить латиница или кирилица символы введены. (https://javascript.ru/forum/misc/25510-kak-proverit-latinica-ili-kirilica-simvoly-vvedeny.html)

strengerst 07.02.2012 19:52

КАк проверить латиница или кирилица символы введены.
 
А как можно проверить при регестрации пользователь ник записал латинскими буквами или кирилицей, и если кирилицей выдать ему об этом сообщения.

poorking 07.02.2012 19:55

var isKyr = function (str) {
    return /[а-я]/i.test(str);
}

alert(isKyr("абв"));
alert(isKyr("abc"));

strengerst 07.02.2012 20:27

О спасибочки.:yes:

Aetae 07.02.2012 20:52

poorking,
Во первых: /[а-яё]/i
Во вторых, с таким подходом человек может ввести ещё кучу других не-латнских символов, так что правильнее проверять примерно так: /^\w+$/

poorking 07.02.2012 21:05

Aetae,
Про "ё" - согласен, про остальное не ясно, может важно именно то, чтобы не кириллические символы были. Функция, что я написал называется isKyr, по названию ясно что она делает. Я счел что если хотя бы один кириллический символ есть, то можно сказать что это кириллица. А так да, если надо валидировать именно на латиницу+цифры, то /^\s*(\w+)\s*$/

PS И да, я вообще не понимаю зачем валидировать поля формы на клиенте. Я делаю это только на сервере. Чтобы было красиво можно фоновые запросы отсылать для валидации. Иначе двойная работа, и тут и там.
А кто валидирует только на клиенте, вообще шикарен

Aetae 07.02.2012 21:13

Куча лишних запросов это бред.
Поверхностная валидация на клиенте, полная на сервере - обычная практика.

poorking 07.02.2012 21:20

Ну если после каждого нажатия клавиши тянуть, то да. А если один раз перед отправкой формы, то не лопнет сервер от 1 запроса

Gozar 07.02.2012 21:41

Цитата:

Сообщение от poorking (Сообщение 155966)
Ну если после каждого нажатия клавиши тянуть, то да. А если один раз перед отправкой формы, то не лопнет сервер от 1 запроса

Превалидацию всегда! нужно делать на клиенте. Мало ли что там не лопнет. Пользователю удобней, а значит закон. А до твоего сервера ещё долететь надо и можешь даже не рассказывать какой у тебя офигенный сервер и жирный канал.

inst 08.02.2012 02:02

Gozar,
Ты какой-то... агрессивный, что ли.
Но в целом поддерживаю, превалидация нужна.

Gozar 08.02.2012 11:24

Цитата:

Сообщение от inst (Сообщение 156014)
Ты какой-то... агрессивный, что ли.

Я спокоен как никогда. :)
Тебе кажется, отдохни что ли от компьютера, а то тебе везде зло мерещится.

Юзабилити у 99% виденных мной сайтов с регистрацией равно нулю.

poorking 08.02.2012 11:44

Maxmaxmaximus,
Цитата:

Сообщение от Maxmaxmaximus
не понимаю зачем ограничивать человека в символах

Ну ТС же не сказал что речь идет о password, логины, например, ограничивают по символам ради эстетических соображений наверно. А что там проверяет ТС, не ясно.

О предвалидации на клиенте. А если я захочу изменить правила валидации, мне надо следить чтобы правила на сервере соответствовали правилам на клиенте. Я конечно понимаю, что критерии проверки немного разные, например: на клиенте я посмотрю на валидность символов, а на сервере - не занят ли уже этот логин при регистрации. Но что, если я захочу разрешить какой-то еще один символ, например знак "+"? Мне надо переписывать регулярки и на сервере и клиенте?

Но пока я писал, я понял что текст клиентской регулярки можно просто сгенерировать сервером, точнее точно такой же подставить.
Спасибо за советы.

И да, Gozar, думаю, inst хотел сказать не агрессивный, а импульсивный :)

Gozar 08.02.2012 12:19

Цитата:

Сообщение от poorking (Сообщение 156088)
Но пока я писал, я понял

Задача программиста создавать удобство для пользователей, а не наоборот. Как ты будешь решать эту проблему зависит от того, насколько ты хороший программист. Но ты уже и так понял, насколько я вижу.

Цитата:

Сообщение от poorking (Сообщение 156088)
думаю, inst хотел сказать не агрессивный, а импульсивный :)

:stop: Думаю он хотел сказать то, что сказал.

inst 08.02.2012 14:29

Цитата:

Сообщение от poorking (Сообщение 156088)
И да, Gozar, думаю, inst хотел сказать не агрессивный, а импульсивный :)

Точно :)

Gozar 08.02.2012 14:38

Цитата:

Сообщение от inst (Сообщение 156109)
Точно :)

Подпись мою видишь?

strengerst 08.02.2012 15:52

а как проверку можно реализовать через if если в переменной se храница текст для проверки.
ну типа это не правильно:
var se;
if(/^\w+$/==se){var j="латиница"  } else{var j="не латиница"}

poorking 08.02.2012 15:54

strengerst,
Пользуйтесь методами RegExp для работы со строками или методами String для работы с регулярными выражениями

strengerst 08.02.2012 16:15

Ну напиши плиз пример кода через if.

strengerst 08.02.2012 19:22

Все получилось зделал так
var o="слово"
var znach = /^[а-яё]+$/i;
alert( znach .test(o));
:)


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