2014-01-29 192 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