javascript
  • regex
  • 2015-05-21 52 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

    相關問題