Как определить, содержит ли строка какие-либо символы, отличные от ASCII? - программирование
Подтвердить что ты не робот

Как определить, содержит ли строка какие-либо символы, отличные от ASCII?

Я ищу для определения интернационализированных доменных имен и локальных частей в адресах электронной почты и хотел бы знать, есть ли быстрый и простой способ сделать это с помощью регулярного выражения или иначе в Javascript.

4b9b3361

Ответ 1

Попробуйте с этим регулярным выражением. Он проверяет все символы ascii, которые имеют некоторое значение в строке, из пространства 32 в tilde 126:

var ascii = /^[ -~]+$/;

if ( !ascii.test( str ) ) {
  // string has non-ascii characters
}

Изменить: с вкладками и символами новой строки:

/^[ -~\t\n\r]+$/;

Ответ 2

Это должно сделать это...

var hasMoreThanAscii = /^[\u0000-\u007f]*$/.test(str);

... и...

var hasMoreThanAscii = str
                       .split("")
                       .some(function(char) { return char.charCodeAt(0) > 127 });

Благосклонность ES6...

let hasMoreThanAscii = [...str].some(char => char.charCodeAt(0) > 127);

Ответ 3

charCodeAt может использоваться для получения символьного кода в определенной позиции в строке.

function isAsciiOnly(str) {
    for (var i = 0; i < str.length; i++)
        if (str.charCodeAt(i) > 127)
            return false;
    return true;
}