javascript
  • regex
  • 2015-05-21 54 views -4 likes 
    -4

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

    from 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;希腊文延伸

    function is_greek(name){ 
        var greek = /[\u0370-\u03ff]/; 
        return greek.test(name); 
    } 
    
    > is_greek("α") 
    < true 
    
    +0

    的确我需要希腊和科普特而不是希腊的延伸和它的作品 – Anamed

    相关问题