Регулярные выражения в javascript-е - русские буквы
Помогите с регулярными выражениям в javascript-e. Нужно проверить поле формы на ввод русских букв, разрешаются только русские буквы.
Регулярное виражные такое: var per_name =/^[А-Я]$/i; if(!per_name.test(name)){ var text = "Разрешены только русские буквы"; } Но оно не работает. Даже когда вводишь русские буквы, условие срабатывает. Как правильно писать нужно? |
<form onsubmit="alert('все ок'); return false"> <input type="text" pattern="[а-яА-ЯёЁ]+" required title="Можно использовать только кириллицу" /> <button type="submit">Отправить</button> |
Спасибо.
|
Должен отметить что HTML5 валидация не работает в старых браузерах. Кроме-того, не всем нравится реализация в браузерах.
Тем не менее, атрибут pattern и required можно всегда использовать, в добавок, если реализация браузера устраивает, подключить polyfill для старых браузеров. Если не устраивает - все равно можно опираться на эти атрибуты. Кстати такой полифил как WebShims позволяет заменить UI на новых браузерах. Цитата:
<form onsubmit="return false"> <input id="input" value="ффффваыа" /> <button type="submit">Отправить</button> <script> (function(){ var input = document.getElementById('input'); input.onchange = function() { var name = this.value; var per_name =/^[А-Я]$/i; if(!per_name.test(name)){ var text = "Разрешены только русские буквы"; } alert(text || 'Все ок'); }; })(); </script> </form> |
:write: вариант ...
<!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> </head> <body> <form onsubmit="return false"> <input id="input" value="ффффваыа" /> <button type="submit">Отправить</button> <script> (function(){ var input = document.getElementById('input'); input['oninput' in input ? 'oninput' : 'onpropertychange'] = function() { var name = this.value; var per_name =/[^А-ЯЁ]/i; if(per_name.test(name)){ var text = "Разрешены только русские буквы"; } text && alert( text); }; })(); </script> </form> </body> </html> |
Мой вариант, как я и предлагал, в декларативном стиле с fallback'ом на нативную валидацию, скрипт обходит все инпуты:
<!DOCTYPE html> <meta charset="utf-8" /> <form onsubmit="return false"> <input id="input" value="ффффваыа" pattern="[а-яА-ЯёЁ]+" required="" title="Разрешены только русские буквы" /> <button type="submit">Отправить</button> <script> (function(){ var inputs = document.getElementsByTagName('input'); for (var i = 0, input; input = inputs[i]; i++) { if (input.type == 'text') { input.oninput = oninput; // input['oninput' in input ? 'oninput' : 'onpropertychange'] = oninput; // for IE8 } } function oninput() { var valid = true; if ('required' in this.attributes) { valid = valid && this.value != ''; } if ('pattern' in this.attributes) { var pattern = new RegExp('^' + this.getAttribute('pattern') + '$', 'gi'); valid = valid && pattern.test(this.value); } if (!valid) { alert(this.title); } } })(); </script> </form> |
Цитата:
|
Из континуума выпадает только ё, остальное с перерывом на казахские "буквы" идет сплошняком. Вариант предыдущего читателя рони в точности.
И вообще, зачем проверять - по кейпапам берите коды и в кириллицу по кодировке. И все. Кто не переключился - сам виноват. |
Цитата:
|
Так кириллицы натырена с нескольких алфавитов, в том числе и латинского. Так что есть там русские буквы в слове hello word
|
Часовой пояс GMT +3, время: 22:29. |