Я ищу для определения интернационализированных доменных имен и локальных частей в адресах электронной почты и хотел бы знать, есть ли быстрый и простой способ сделать это с помощью регулярного выражения или иначе в Javascript.
Как определить, содержит ли строка какие-либо символы, отличные от ASCII?
Ответ 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;
}