Как я могу проверить, содержит ли поле ввода иностранные символы? - PullRequest
0 голосов
/ 23 марта 2010

У меня есть поле ввода в форме. После нажатия кнопки подтверждения я хочу проверить, чтобы убедиться, что пользователь вводит только нелатинские символы, поэтому любые символы иностранных языков, такие как китайский среди многих других. Или, по крайней мере, проверить, что он не содержит латинских символов.

Могу ли я использовать для этого регулярное выражение? Каков наилучший подход для этого?

Я проверяю как в javaScript, так и в PHP. Какие решения можно использовать для проверки наличия иностранных символов в поле ввода на обоих языках программирования?

Ответы [ 3 ]

2 голосов
/ 23 марта 2010

В PHP вы можете проверить свойство Unicode IsLatin. Это, вероятно, ближе всего к тому, что вы хотите.

Так что если preg_match('/\p{Latin}/u', $subject) возвращает true, то в вашем $subject есть хотя бы один латинский символ. См. Также эту ссылку .

JavaScript не поддерживает это; вам придется вручную создать допустимые диапазоны Unicode.

1 голос
/ 24 марта 2010

Вы пытаетесь проверить, являются ли все буквы не латиницей, но вы принимаете акцентированные буквы.

Простое решение - проверить строку с помощьюрегулярное выражение (это полезно, если у вас есть плагин проверки):

/^[^a-z]+$/i
  • ^...$ - совпадение от начала до конца
  • ^[...] - символы не
  • a-z - хотя Z,
  • + - хотя бы с одной буквой
  • /i - игнорирование регистра (также может быть сделано/^[^a-zA-Z]+$/)

Другой вариант - просто искать букву:

/[a-z]/i

Это регулярное выражение будет соответствовать, если строка содержит букву, поэтомуВы можете аннулировать его.

В JavaScript вы можете легко это проверить с помощью if:

var s = "שלום עולם";
if(s.match(/^[^a-z]+$/i){
}

или

if(!s.match(/[a-z]/i))

PHP имеет другой синтаксис и большую безопасностьчем JavaScript, но регулярные выражения такие же.

1 голос
/ 23 марта 2010

В Javascript, по крайней мере, вы можете использовать шестнадцатеричные коды внутри выражений диапазона символов:

var rlatins = /[\u0000-\u007f]/;

Затем вы можете проверить, есть ли в строке латинские символы, например:

if (rlatins.test(someString)) {
  alert("ROMANI ITE DOMUM");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...