2014-01-29 66 views
1

我需要檢查名稱字段是否只有希伯來語字母[א-ת], 現在該函數可以正常工作,但是如果我輸入來自兩種不同語言(例如「abcdאבג」)的字母,它會忽略並返回true和我需要它返回false, 謝謝Javascript函數返回

function justHeb(str){ 
    ok = true; 
     for (var i=0;i<str.length&&ok;i++) 
     { 
      if (!str[i].match(/[א-ת]/)) 
      { 
       ok=false; 
       return false; 
      } 
      else return true; 
     } 
} 

function firstName(str){ 
    if(justHeb(document.getElementById("firstname").value)){ 
     return true; 
    } 
    else { 
     return false; 
    } 
} 

function checkAll(){ 
    if(firstName()){ 
     alert("true"); 
    } 
    else 
     alert("false"); 
} 
+0

你爲什麼要檢查每封信,而不只是一個正則表達式檢查? – epascarello

+0

這是我的老師想要的 – MaorBenezri

回答

0

你需要移動return true;for循環。否則,您的代碼將接受任何簡單的以及希伯來字符的字符串。現在

function justHeb(str){ 
    var ok = true; 
     for (var i=0;i<str.length&&ok;i++) 
     { 
      if (!str[i].match(/[א-ת]/)) 
      { 
       ok=false; 
       return false; 
      } 
     } 
    return true; 
} 

,你可以通過讓正則表達式引擎做的工作,你甚至進一步簡化:

function justHeb(str) { 
    return /^[א-ת]*$/.test(str); 
} 

領先^意味着比賽必須在字符串的開頭開始。 *表示接受該範圍內零個或多個字符的序列,最後$表示匹配必須在字符串的末尾結束。

+0

謝謝,但我的意思是我需要如果字符串包含其他字符它是返回false而不是任何情況返回true – MaorBenezri

+0

@MaorBenezri是的,我明白這一點。只有當字符串只包含該範圍內的字符時,才希望返回值爲「真」,對嗎?所以,'abcת'應該返回'false',對吧? – Pointy

+0

是的,正確的,正確的 – MaorBenezri