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