我希望检查在名称字段中输入的前两个字符是否为字母 - 除此之外没有区别(空格,', - 等都是公平的游戏)。这是我到目前为止所做的,但它不起作用。思考?谢谢!
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
}
答案 0 :(得分:1)
您的表达式似乎是语法错误。 +
没有任何东西可以要求一个或多个,并且JS不进行超级贪婪的匹配 - 它支持?
跟随量词使表达式不合理,但不是+
。你应该得到一个SyntaxError等。 (如果不是,浏览器可能会按字面意思解释+
并期待+
。)
您可以将表达式更改为/^[a-zA-Z]{2}.?$/
以消除该错误...但请注意,如果字符串中有标点,它将无法匹配 - 它将会只匹配最后一个非字母。
你最好只尝试匹配你关心的事情。在这种情况下,由于您只关心前两个字符是字母,/^[a-zA-Z]{2}/
会完全避免这个问题。
答案 1 :(得分:0)
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;