電子メール アドレスの国際化されたドメイン名とローカル部分を検出しようとしています。これを正規表現または Javascript ですばやく簡単に行う方法があるかどうかを知りたいです。
20508 次
4 に答える
28
これで済むはず…
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);
于 2012-11-23T03:40:31.157 に答える
22
この正規表現を試してください。スペースからチルダまで、文字列内で何らかの意味を持つすべての ASCII 文字をテストします。32
126
var ascii = /^[ -~]+$/;
if ( !ascii.test( str ) ) {
// string has non-ascii characters
}
編集:タブと改行を使用:
/^[ -~\t\n\r]+$/;
于 2012-11-23T03:49:38.883 に答える
10
charCodeAt
文字列内の特定の位置にある文字コードを取得するために使用できます。
function isAsciiOnly(str) {
for (var i = 0; i < str.length; i++)
if (str.charCodeAt(i) > 127)
return false;
return true;
}
于 2012-11-23T03:40:38.157 に答える
0
@alexのソリューションのより簡単な代替:
const hasNonAsciiCharacters = str => /[^\u0000-\u007f]/.test(str);
于 2021-06-21T15:00:48.070 に答える