如何判断字符串中是否包含任何非ASCII字符?

时间:2012-11-23 03:38:12

标签: javascript regex unicode ascii

我希望检测电子邮件地址中的国际化域名和本地部分,并想知道是否有一种快速简便的方法可以使用正则表达式或Javascript中的其他方式。

4 个答案:

答案 0 :(得分:23)

应该这样做......

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);

答案 1 :(得分:14)

试试这个正则表达式。它测试字符串中具有某种含义的所有ascii字符,从空格32到代字号126

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

if ( !ascii.test( str ) ) {
  // string has non-ascii characters
}
带有标签和换行符的

修改

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

答案 2 :(得分:10)

charCodeAt可用于获取字符串中某个位置的字符代码。

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

答案 3 :(得分:0)

更简单的 @alex's solution 替代方案:

usermanager