JavaScript « проверка принадлежности символов определенному юникод-диапазону средствами JavaScript'a
Как проверить средствами JS, все ли символы строки принадлежат определенному диапазону юникода(u+4e00..u+9fff, к примеру)?
1 ответов
По-моему, все гораздо проще и регулярки городить незачем:
String.prototype.isCharInRange = function(from, to) {
var charCode = this.charCodeAt(0);
return (charCode >= from.charCodeAt(0) && charCode <= to.charCodeAt(0));
}
Пример вызова:
"Э".isCharInRange("\u0041", "\u007A");
Ответ на самом деле сам по себе напрашивается. Решение в обычном регулярном выражении.
"B".match(/[\u0041-\u007A]/) // => ["B"]
Можно, например, накидать простую функцию:
function is_u () {
var a = arguments, l = a.length, i = 0, undef, char;
// первый аргумент - символ, который надо определить
if (l === 0) { throw new Error('No enough args'); }
// второй и третий агрументы - символьное обозначение "областей" \u0041-\u007A
if (a[1] === undef || a[1] === null || a[2] === undef || a[2] === null) { throw new Error('Range not defined'); }
char = a[0];
pattern = "[\\" + a[1] + "-" +"\\" + a[2] + "]"; // \u0041-\u007A
return (char.match(pattern) == null) ? false : true;
}
Работать она будет примерно так:
is_u("A", "u0041", "u007A"); // true
is_u("Ю", "u0041", "u007A"); // false