Страницы

Поиск по вопросам

пятница, 31 января 2020 г.

Как правильно сделать проверку на наличие русских символов в строке?

#javascript #jquery #регулярные_выражения


Подскажите  , как правильно сделать проверку символов в строке ?

вот код который запрещает вводить русские символы в инпут:

myinput.oninput = function() {
  var srint = $("#myinput").val().replace(/[а-яА-ЯЁё-і]/g, ''); 
  srint.replace(/[а-яА-ЯЁё-і]/g, '');
  $("#myinput").val(srint);
};


Нужно , чтоб когда пользователь вводил русские символы срабатывала alert("введите
латинские символы")

Подскажите как сделать такую проверку?
    


Ответы

Ответ 1



Раз уж вы используете jQuery, так используйте и события $("#myinput").on('keydown', function(e) { var regexp = /[а-яё]/i; if(regexp.test(this.val())) { e.preventDefault(); alert("введите латинские символы"); return false; } ... }); Дополнение Как правильно заметил @Qwertiy лучше проверят не на присутствие запрещенных символов, а на наличие только разрешенных. Например только латиница + пробелы $("#myinput").on('keydown', function(e) { var regexp = /^[a-z\s]+$/i; if(!regexp.test(this.val())) { e.preventDefault(); alert("введите только латинские символы или пробелы"); return false; } ... });

Ответ 2



Надо не запрещать, а разрешать. В юникоде всегда найдётся алфавит, который те не хочешь увидеть, раз уж русские буквы не подходят. Ну и используй флаг игнорирования регистра.

Ответ 3



Можно проверять код символа в Unicode и определять входит ли он в диапазон допустимых. Коды от 48 до 57 - это цифры. Коды от 64-90 - латинские заглавные буквы от 'A' до 'Z' Коды от 97-122 - латинские строчные буквы от 'a' до 'z' Промежутки между этими диапазонами содержат технические символы и знаки типа !@#$%^&*. Коды выше 122 содержат алфавиты других культур в том числе и кириллицу (1040-1103). Если вы допускаете ввод технических символов, то можно просто проверять что код символа меньше 122: function checkInput(event) { var x = event.charCode; if(x>122) //символ 122 это латинская 'z' { alert("Некорректный ввод"); } }

Комментариев нет:

Отправить комментарий