簡體   English   中英

JavaScript 和正則表達式:如何檢查字符串是否僅為 ASCII?

[英]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 字符。 現在已經很清楚了。

支持的瀏覽器:

  • 鉻 64+
  • Safari/JavaScriptCore 從 Safari Technology Preview 42 開始
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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM