2013-05-16 3 views
1

я иметь следующую проверку на поле формы:Javascript регулярного выражения, если заявление для 2 различных входных значений

$(".controlscard input").blur(function() { 
var re = /^(?:[0-9]+[a-z]|[a-z]+[0-9])[a-z0-9]*$/i; 
if(re.test(document.getElementById("register_coachcard_no").value)) 
{ 
    $(this).css('border-color','green'); 
    $(this).siblings('.info').css('display','none'); 
    $(this).siblings('.error').css('display','none'); 
    $(this).siblings('.valid').css('display','inline-block'); 
    $("#email_error40111").hide(); 

} 
else 
{ 
     $(this).css('border-color','red'); 
    $(this).siblings('.info').css('display','none'); 
    $(this).siblings('.valid').css('display','none'); 
    $(this).siblings('.error').css('display','inline-block'); 
    $('#registerErrors').show(); 
    $('#email_error40111').remove(); 
    $('#registerErrors').append('<p id="email_error40111">Coachcard must contain at least 1 letter and 1 number</p>'); 
}}); 

выше в основном проверяет введенные данные содержат 1 письмо и 1 номер.

Мне нужно поставить что-то на место, где, если длина значения составляет 8 символов, ему нужно будет проверить до 2 букв, а затем 6 чисел.

Если длина значения составляет 9 символов, то могут вводиться только цифры.

Любые предложения по тому, что я могу сделать?

Cheers, Dan

+0

'/^[ a-zA-Z] \ d | [a-zA-Z] {2} \ d {6} | \ d {9} $/i' - Это то, что вы хотите? – tjameson

+0

что это покрывает? – danyo

+0

Точно, как вы сказали. '|' указывает логическое ИЛИ. (1 буква, одно число ИЛИ две буквы, 6 номеров ИЛИ 9 номеров). – tjameson

ответ

1

Я думаю, что вы хотите регулярное выражение, как это:

/^[a-zA-Z]\d|[a-zA-Z]{2}\d{6}|\d{9}$/i 

| указывает логическое ИЛИ, так что, если имеет место один из них, это будет соответствовать:

  • 1 письмо с последующим номером
  • 2 буквы, а затем 6 цифр
  • 9 номеров

Вы упомянули, что хотите во втором случае выбрать 1 или 2 буквы, но я не был уверен, как это соответствует вашему требованию 8 символов. Вы можете изменить его принять 1 или 2 буквы на 7 или 8 полных символов, как так:

/^[a-zA-Z]\d|[a-zA-Z]{1,2}\d{6}|\d{9}$/i 

Edit:

Из комментариев, скорректированный регулярное выражение:

/^[a-zA-Z]\d|[a-zA-Z]{1}\d{7}|[a-zA-Z]{2}\d{6}|\d{9}$/i 
+0

просто смотря на это снова, 8-значное значение будет содержать максимум 2 буквы и не более 7 цифр случайным образом. ваш ответ выше, я верю, что позволяет только буквы в начале. Это правильно? – danyo

+1

@ danyo - Исправить, см. Править – tjameson

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