Ошибка проверки ввода, Javascript - PullRequest
0 голосов
/ 26 августа 2011

Я пытаюсь проверить, что вводимые пользователем данные начинаются с двух букв, за которыми следуют 6, 8 или 10 цифр. Проверка длины строки должна быть в порядке, но есть ли более точный способ проверить, что первые два символа являются буквами и что последующие 6, 8 или 10 символов являются числами, чем преобразование каждого символа в юникод, а затем проверка таким образом?

Ответы [ 3 ]

2 голосов
/ 26 августа 2011

Вы можете использовать регулярное выражение:

^[a-zA-Z]{2}(?:\d{6}|\d{8}|\d{10})$

Это будет проходить, только если первые 2 - это альфы, а следующие 6, 8 или 10 - числа.

JS

function isValid(txt) {
    return /^[a-zA-Z]{2}(?:\d{6}|\d{8}|\d{10})$/.test(txt);
}

alert(isValid("ab123456"));   // pass
alert(isValid("ab1234567"));  // fail, contains 7 digits
alert(isValid("abc123456"));  // fail, starts with 3 chars 
alert(isValid("ab12345678")); // pass

Вот полный пример JS: http://jsfiddle.net/mrchief/sRLrW/

0 голосов
/ 26 августа 2011

Отрываясь от моей головы:

var str = 'abc1234567890';

if (/^[a-z]{2}[0-9]{6}(([0-9]{2}){0,2}$/.test(str)) {
   ...

}

Выполнение [0-9] {6,10} не сработало бы, поскольку допускало бы 7 или 9 цифр, а не только 6/8/10.

0 голосов
/ 26 августа 2011

Почему бы не использовать регулярные выражения?Javascript имеет достойную поддержку регулярных выражений.

...