PDA

Просмотр полной версии : RegExp, условие сравнения из диапазона Unicode.


Tails
05.10.2015, 12:58
Здравствуйте.
Не могу понять, почему регулярное выражение возвращает false.
Мне нужно проверить все символы в строке на принадлежность к разрешённым диапазонам символов юникода:
var str:String = "Jonny";
var reg:RegExp = /^[\u0061-\u1D7CB \u02b0-\u16f9f \u0041-\u1D7CA]+$/i;

trace(str.search(reg));
trace(reg.test(str));

for(var i = 0; i < str.length; i++){
inf(str.charAt(i), 0x02b0, 0x16f9f);
}

function inf(char:String, min:uint, max:uint):void{
var code:Number = char.charCodeAt(0);
trace(char, "0x" + code.toString(16), code >= min, code <= max);
}


Если из выражения убрать \u02b0-\u16f9f, то оно начинает возвращать true. Почему так? Разве там не должно быть условие or?

udaaff
05.10.2015, 22:15
Возможно trace натолкнет на какие-то мысли.
trace("\u0061")
trace("\u1D7CB")
trace("\u02b0")
trace("\u16F9F")
trace("\u0041")
trace("\u1D7CA")
a
ᵼB
ʰ
u16F9F
A
ᵼA