2015-04-17 3 views
3

Мне нужно, чтобы мои пользователи не вводили символы неевропейских символов в текстовое поле.Обнаружение неевропейских символов

Например, вот как я запретить кириллицы:

$('.test').keyup(function(e) { 
     var toTest = $(this).val(); 
     var rforeign = /[\u0400-\u04FF]/i; 
     if (rforeign.test(toTest)) { 
      alert("No cyrillic allowed"); 
      $(this).val(''); 
     } 
    }); 

Но мне также нужно исключить арабский, японский, и так далее.

Я просто хочу, чтобы:

  • ASCII английский, стандартные символы
  • итальянский акцентированные буквы: à è ì ò иа é í ó ú
  • другие специальные символы из европейских языков: французский, Немецкий ...

Есть ли способ сделать это с диапазонами?

Я пробовал /[\u0400-\u04FF]/i, но он просто позволяет использовать ASCII английский (не итальянский, например).

+1

Я думаю, вам нужно определить «Европу». Кириллические сценарии используются в нескольких европейских странах, и где именно вы рисуете линию? Считаете ли вы, что Исландия является частью Европы? –

+0

Как насчет арабских цифр ...? На этой самой странице несколько ... – deceze

ответ

5

Просто позвольте юникод символов на заданном диапазоне/с, например,

/^[a-z\u00C0-\u00F6\u00F8-\u017E]+$/i 

Пример скрипку: https://jsfiddle.net/4y6e6bj5/3/


Это регулярное выражение позволяет основной латинский/латинский расширенный A (диакритические знаки и буквы с диакритическими знаками). Он исключает любой другой символ/символ.

Если вам нужно разрешить другие специальные символы Юникода, посмотрите на unicode table и вставьте стольких диапазонов, сколько вам нужно в регулярное выражение

+0

Несмотря на то, что эта работа отлично работает, она не обнаруживает неевропейских персонажей, а также обнаруживает неевропейских персонажей. – Docteur

+0

это не работает ... Я заменил ваше регулярное выражение в моем коде и все еще могу набрать ية или Ф без предупреждения! –

+0

https://jsfiddle.net/fabiobozzo/tcdmm4pb/ –

0

Используйте отрицательный набор:

[^A-Za-zàèìòùáéíóú(othercharacters..)]