2015-05-21 2 views
-4

Я хочу сделать проверку регулярного выражения с использованием шестнадцатеричных метасимволов. причина, по которой я решил пойти так, потому что мне нужен только греческий язык для работы.Проверка имени RegExp с использованием шестнадцатеричных метасимволов

от http://www.unicode.org/Public/UNIDATA/Blocks.txt Я вижу, что мне нужно использовать символы от 1F00 до 1FFF. однако я не могу найти, что происходит не так.

вот что я сделал до сих пор:

document.querySelector("#register input[name='first_name']").onblur = 

function(){ 
    /*RegEx about name*/  
    var str = /[\u1F00-\u1FFF]/g; 
    var name = document.querySelector("#registerinput[name='first_name']").value; 
    if (name == null || name == ""){ 
     alert("First name must be filled out!"); 
    } 
    else if(!name.match(str)){ 
     alert("Name must contain (greek)letters only!"); 
    } 
}; 
+0

Что не работает? И каково ожидаемое поведение? – nhahtdh

+0

Вероятно, это не связано с вашей конкретной проблемой, но ваше регулярное выражение будет соответствовать любому греческому символу. Это должно быть '/^[\ u1F00- \ u1FFF] * $ /', –

+0

Ну английские буквы цифры и специальные символы не принимаются. Проблема в том, что греческие символы также не принимаются. К слову, так требовалось проголосовать ?????????????????? – Anamed

ответ

1

Диапазон вы используете греческий расширенный. Вам нужен диапазон от 0370 до 03ff. На указанной странице вы цитируете:

0370..03FF; Греческий и коптский

1F00..1FFF; Greek Extended

function is_greek(name){ 
    var greek = /[\u0370-\u03ff]/; 
    return greek.test(name); 
} 

> is_greek("α") 
< true 
+0

действительно мне нужен греческий и коптский, а греческий расширенный, и он работает – Anamed

Смежные вопросы