Регулярное выражение и разделитель в javascript

Я не так хорош с регулярным выражением, мне нужна помощь, и я застрял...

Вот что я получил:

EDITED: теперь работает отлично, взгляните на...

http://jsfiddle.net/oscarj24/qrPHk/1/

Это то, что мне нужно:

// First 4 numbers must be always 9908
// After the 4 first numbers must be a : as delimiter
// After the delimiter...
// - the allowed values are just numbers from 0-9
// - the min. length is 3
// - the max. length is infinite
// RESULT:
// - Valid: 9908:123 or 9908:123456...
// - Invalid: 9908:12 or 9908:xyz

Спасибо.

Ответы

Ответ 1

var regex = /^9908:\d{3,}$/;

будет соответствовать точно 9908: за ним следуют 3 или более цифр.

Ответ 2

Ответ Александра Корвина должен работать нормально. Я просто хотел добавить какое-то объяснение в его ответ.

Вам не нужны квадратные скобки вокруг 9908, потому что квадратные скобки означают, что любой из символов в них действителен. Так что ваш код на самом деле пытался сделать, это совпадение с 9, 0 или 8. Если вы хотите указать буквенную строку символов, вы можете просто написать их так, как он.

Игнорируя, что, однако, вторая проблема, которую я вижу, заключается в том, что вы использовали неверный синтаксис квантификатора для определения длины сегмента 9908. Вам нужно использовать фигурные скобки, чтобы указать конкретные диапазоны длины, например {3,} в своем коде. Скобки просто используются для создания групп последовательностей и обратных ссылок.

Кроме того, если вы не создаете объект RegExp, вы должны использовать сокращенный синтаксис regex JavaScript, который запускается и заканчивается косой чертой. Вы также можете добавить модификатор после конечной косой черты, которая изменяет порядок выполнения регулярного выражения. Например:

var re = /stackoverflow/g;

"g" означает, что он может несколько раз совпадать с строкой объекта. Существует несколько других модификаторов, которые вы можете найти здесь: http://www.regular-expressions.info/javascript.html

Ваша фиксированная строка должна выглядеть так:

var regex = /^9908:\d{3,}$/;

Ответ 3

Используйте это:

var match = /^9908:[0-9]{3,}$/.test("9908:123");
​alert(match);​