使用十六进制元字符进行RegExp名称验证

时间:2015-05-21 07:56:18

标签: javascript regex

我想使用十六进制元字符进行正则表达式验证。我决定采用这种方式的原因是因为我只需要使用希腊语来工作。

来自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!");
    }
};

1 个答案:

答案 0 :(得分:1)

您使用的范围是希腊语扩展。你想要的范围从0370到03ff。从您引用的页面:

  

0370..03FF;希腊语和科普特语

     

1F00..1FFF;希腊语扩展

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

> is_greek("α")
< true