[英]JavaScript & regex : How do I check if the string is ASCII only?
我知道我可以通過在正則表達式中應用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;
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.