39

W次のように正規表現を適用することで、単語(0〜9 AZ azおよびアンダースコア)を含む文字列に対して検証できることを知っています。

function isValid(str) { return /^\w+$/.test(str); }

しかし、文字列にASCII文字のみが含まれているかどうかを確認するにはどうすればよいですか?(私は近くにいると思いますが、何が恋しかったですか?)

参照:https ://stackoverflow.com/a/8253200/188331

更新:私の場合は、標準の文字セットで十分です。

4

4 に答える 4

106

あなたがそれをする必要があるのは、文字が正しい文字範囲にあることをテストすることです。

function isASCII(str) {
    return /^[\x00-\x7F]*$/.test(str);
}

または、拡張ASCII文字セットを使用する可能性がある場合:

function isASCII(str, extended) {
    return (extended ? /^[\x00-\xFF]*$/ : /^[\x00-\x7F]*$/).test(str);
}
于 2013-01-14T04:04:15.637 に答える
14

これを行うのに正規表現は必要ありません。その文字列内のすべての文字の文字コードが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;
}
于 2013-01-14T04:02:44.317 に答える
5

ES2018 の場合、正規表現はUnicode プロパティ エスケープ/[\p{ASCII}]+/uをサポートしており、ASCII 文字の照合に使用できます。今でははっきりしています。

サポートされているブラウザ:

  • クローム 64+
  • Safari Technology Preview 42 以降の Safari/JavaScriptCore
于 2019-01-11T07:02:29.780 に答える
0
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;
};
于 2019-11-05T15:42:30.230 に答える