如何验证*首先*输入的两个字符是字母?

时间:2014-12-04 20:52:36

标签: javascript validation character

我希望检查在名称字段中输入的前两个字符是否为字母 - 除此之外没有区别(空格,', - 等都是公平的游戏)。这是我到目前为止所做的,但它不起作用。思考?谢谢!

if (document.form01.firstName.value.length < 2 
 || !/^[a-zA-Z]{2}+.?$/.test(document.form01.firstName.value)) {
    alert("First name must contain at least 2 letters.");
    document.form01.firstName.select();
    document.form01.firstName.style.backgroundColor="yellow";
    return false;    // leave now
} 

2 个答案:

答案 0 :(得分:1)

您的表达式似乎是语法错误。 +没有任何东西可以要求一个或多个,并且JS不进行超级贪婪的匹配 - 它支持?跟随量词使表达式不合理,但不是+。你应该得到一个SyntaxError等。 (如果不是,浏览器可能会按字面意思解释+并期待+。)

您可以将表达式更改为/^[a-zA-Z]{2}.?$/以消除该错误...但请注意,如果字符串中有标点,它将无法匹配 - 它将会只匹配最后一个非字母。

你最好只尝试匹配你关心的事情。在这种情况下,由于您只关心前两个字符是字母,/^[a-zA-Z]{2}/会完全避免这个问题。

答案 1 :(得分:0)

&#13;
&#13;
function digitVal(elem){
  
  if (!elem.value.match(/\d{2,2}/)){
    // if the first two characters are not digits
    
    elem.style.background = 'yellow';
    // the background changes to yellow
    
    }
  
  else {
    
    elem.style.background = 'white';
    // otherwise leave it white
    
    }
  
  }
&#13;
<input type="text" onkeyup="digitVal(this)" size="40" placeholder="first two characters must be numbers"/>
&#13;
&#13;
&#13;