Регулярные выражения в 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, время: 21:38. |