2014-12-04 4 views
0

Я ищу, чтобы проверить, что первые два символа, введенные в поле имени, являются буквами - кроме того, что это не имеет значения (пробелы, ', - и т. Д. - все это честная игра). Вот что я до сих пор, но он не работает. Мысли? Благодаря!Как проверить, что * первый * два введенных символа являются буквами?

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

Просто примечание: вам не нужна проверка длины. Если регулярное выражение совпадает, то вы уже знаете, что у вас есть как минимум две буквы. (Вам также не нужно сопоставлять остальную часть строки: '/^[a-zA-Z] {2} /' будет достаточно.) – cHao

+0

Все это в стороне, хотя ... есть ли какие-либо сообщения об ошибках в вашей консоли JS? – cHao

+0

Awesome - спасибо! Это работает: – jdogmcgee

ответ

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 
 
    
 
    } 
 
    
 
    }
<input type="text" onkeyup="digitVal(this)" size="40" placeholder="first two characters must be numbers"/>

0

Ваше выражение имеет то, что, как представляется, ошибка синтаксиса. + не имеет ничего, чтобы требовать один или более, а JS не делает супер-жадных совпадений - он поддерживает ? после квантификатора, чтобы сделать выражение неровным, но не +. Вы должны получить SyntaxError или тому подобное. (Если это не так, браузер может интерпретировать + буквально и ожидали +.)

Вы можете изменить выражение /^[a-zA-Z]{2}.?$/, чтобы избавиться от этой ошибки ... но заметьте также, что он не будет соответствовать если есть пунктуация в пределах строка - она ​​будет соответствовать только одной букве в конце.

Вам лучше попытаться подобрать то, что вам нужно. В этом случае, поскольку вам все равно, что первые два символа являются буквами, /^[a-zA-Z]{2}/ полностью исключает проблему.

Смежные вопросы