Комментарии 20
Хозяйке на заметку:
\p{L} проверяет, выставлено ли у юникод-символа свойтво L («letter»).
Работает для всех языков безотносительно локали, главное кодировка utf-8
// adjust pattern to your needs
// $input needs to be UTF-8 encoded
if (preg_match('/^\p{L}+$/u', $input)) {
// OK
} else {
// not OK
}
\p{L} проверяет, выставлено ли у юникод-символа свойтво L («letter»).
Работает для всех языков безотносительно локали, главное кодировка utf-8
извините, забыл указать — (с)тырено у Stefan Gehrig со stackoverflow
спасибо, буду знать! =)
заметка очень полезная, про \p{L}, к сожалению, не знал
теперь при валидации умляутов на PHP «велосипед» применять не придеться
заметка очень полезная, про \p{L}, к сожалению, не знал
теперь при валидации умляутов на PHP «велосипед» применять не придеться
Почитайте Регулярные выражения Фридла, многое для себя откроете.
Самый главный вопрос: а зачем там вообще проверка?
Даже не знаю что вам ответить, если не правильно понял вопрос, пожалуйста поправьте.
Чтоб в форму попадали данные того формата и того набора символов, которые положены.
Если вы про умляуты, то для того чтоб проверку прошли данные иностранцев с расширенным алфавитом латиницы
Чтоб в форму попадали данные того формата и того набора символов, которые положены.
Если вы про умляуты, то для того чтоб проверку прошли данные иностранцев с расширенным алфавитом латиницы
Зачем это проверять? Если кто-то захочет ввести хрень намеренно, то он это в любом случае сделает. Эта проверка в принципе не нужна.
От ботов и спамилок серверная проверка защитит, в какой-то мере.
А это как минимум чтоб если пользователь ввел ошибочную информацию сразу его оповестить, не отправляя данных на сервер, и тем самым не вынуждая пользователя ждать перезагрузки страницы.
Тем более на javascript можно фактически интерактивно подсказывать пользователю что и где не так.
А это как минимум чтоб если пользователь ввел ошибочную информацию сразу его оповестить, не отправляя данных на сервер, и тем самым не вынуждая пользователя ждать перезагрузки страницы.
Тем более на javascript можно фактически интерактивно подсказывать пользователю что и где не так.
Я просто пытаюсь сказать, что самое лучшее решение задачи — не решать ее. От ботов не защитит 100%. Уж там писатели озаботились о валидных именах. Ошибочная инфа… От опечаток не защитит. А лишние цифры, к примеру, и так заметны.
Я же говорю, не от ботов это. Пользователю комфортней, когда при опечатке страница не перезагрузится для проверки, а сразу подсветит что и где не так. По всему интернету частые опечатки соседствующих символов и букв наглядно демонстрируют необходимость предпроверки (например, грубо говоря, he;lo). Тем более, преимущественно, пользователи читают заметки по заполнению возле полей только когда что-то не получается, а не перед вводом информации.
Другое дело, что можно это реализовать на аяксе: без перезагрузки с проверкой на сервере. Но суть топика решение конкретной задачи по проверке на умляуты в javascript, а не обзор оптимальности валидации форм.
Другое дело, что можно это реализовать на аяксе: без перезагрузки с проверкой на сервере. Но суть топика решение конкретной задачи по проверке на умляуты в javascript, а не обзор оптимальности валидации форм.
А почему не сделть проверку через [\w]?
Вы пробовали через \w?
У меня лично умляуты через \w не пропускало
У меня лично умляуты через \w не пропускало
Проверил, действительно не понимает.
Вообще, похоже с такими символами и у самих европейцев много мороки. Видел уже дважды в чужом коде функции по очистке символов от акцентов и умляутов.
Вообще, похоже с такими символами и у самих европейцев много мороки. Видел уже дважды в чужом коде функции по очистке символов от акцентов и умляутов.
Вообще-то выражение /[A-Za-z]+/ и русские буквы не пропускает. Смысл проверки немного не понимаю. Т.е. немцы могут вводить имена в национальной раскладке, а остальные нет? Пусть уж все тогда вводят только английские символы. Поясните.
Задание дали пропускать расширенную латиницу. Заказчик — американцы. Я с вами согласен, что или все обычной латиницей или каждый на своем, но не я заказываю музыку на проекте.
А опубликовал я просто решение для умляутов, если кто-то еще столкнется. Добавить кириллицу в регулярное выражение труда не составит.
А опубликовал я просто решение для умляутов, если кто-то еще столкнется. Добавить кириллицу в регулярное выражение труда не составит.
Я придумал такой способ, основанный на сравнении букв в разных регистрах.
Подходит для европейских языков.
Подходит для европейских языков.
function valid_alpha_str(str) {
var c, res = '';
for (var i = 0; i < str.length; i++) {
c = str.charAt(i);
if (c === ' ' || c.toLocaleUpperCase() !== c.toLocaleLowerCase()) {
res += c;
}
}
return res === str;
}
* This source code was highlighted with Source Code Highlighter.
value = value.replace(/[^a-zA-Z0-9_ÄäÖöÜüß]/, '');
заменить все символы которые не входят в этот диапазон(латиница и цифры) "". ЭМУЛЯТЫ в списке не трогаем и оставляем на месте
заменить все символы которые не входят в этот диапазон(латиница и цифры) "". ЭМУЛЯТЫ в списке не трогаем и оставляем на месте
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Умляуты в регулярных выражениях