我知道我可以通过W
像这样应用正则表达式来验证带有单词(0-9 AZ az 和下划线)的字符串:
function isValid(str) { return /^\w+$/.test(str); }
但是如何检查字符串是否仅包含 ASCII 字符?(我想我已经接近了,但我错过了什么?)
参考:https ://stackoverflow.com/a/8253200/188331
更新:标准字符集对我来说就足够了。
我知道我可以通过W
像这样应用正则表达式来验证带有单词(0-9 AZ az 和下划线)的字符串:
function isValid(str) { return /^\w+$/.test(str); }
但是如何检查字符串是否仅包含 ASCII 字符?(我想我已经接近了,但我错过了什么?)
参考:https ://stackoverflow.com/a/8253200/188331
更新:标准字符集对我来说就足够了。
您需要做的就是测试字符是否在正确的字符范围内。
function isASCII(str) {
return /^[\x00-\x7F]*$/.test(str);
}
或者,如果您想使用扩展的 ASCII 字符集:
function isASCII(str, extended) {
return (extended ? /^[\x00-\xFF]*$/ : /^[\x00-\x7F]*$/).test(str);
}
您不需要 RegEx 来执行此操作,只需检查该字符串中的所有字符是否具有 0 到 127 之间的字符代码:
function isValid(str){
if(typeof(str)!=='string'){
return false;
}
for(var i=0;i<str.length;i++){
if(str.charCodeAt(i)>127){
return false;
}
}
return true;
}
对于 ES2018,Regexp 支持Unicode 属性转义,可以/[\p{ASCII}]+/u
用来匹配 ASCII 字符。现在很清楚了。
支持的浏览器:
var check = function(checkString) {
var invalidCharsFound = false;
for (var i = 0; i < checkString.length; i++) {
var charValue = checkString.charCodeAt(i);
/**
* do not accept characters over 127
**/
if (charValue > 127) {
invalidCharsFound = true;
break;
}
}
return invalidCharsFound;
};