Регулярное выражение и разделитель в javascript
Я не так хорош в регулярных выражениях, мне нужна помощь, и я застрял...
Вот что я получил:
РЕДАКТИРОВАНИЕ: Теперь работает нормально, взгляните на...
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
Благодарю.
3 ответа
var regex = /^9908:\d{3,}$/;
будет точно соответствовать 9908: следуют 3 или более цифр.
Ответ Александра Корвина должен работать нормально. Я просто хотел добавить некоторые пояснения к его ответу.
Вам не нужны квадратные скобки вокруг 9908, потому что квадратные скобки означают, что любой из символов в них действителен. То, что ваш код на самом деле пытался сделать, это совпадение с 9, 0 или 8. Когда вы хотите указать буквальную строку символов, вы можете просто написать их, как он.
Однако, игнорируя это, я вижу вторую проблему в том, что вы использовали неправильный синтаксис квантификатора для указания длины сегмента 9908. Вы должны использовать фигурные скобки, чтобы указать конкретные диапазоны длины, как {3,} в своем коде. Скобки просто используются для создания групп последовательностей и обратных ссылок.
Кроме того, когда вы не создаете объект RegExp, вы должны использовать сокращенный синтаксис регулярных выражений JavaScript, который начинается и заканчивается косой чертой. Вы также можете добавить модификатор после косой черты, который меняет порядок выполнения регулярных выражений. Например:
var re = /stackru/g;
"G" означает, что он может совпадать несколько раз в строке темы. Есть несколько других модификаторов, которые вы можете найти более подробную информацию здесь: http://www.regular-expressions.info/javascript.html
Ваша фиксированная линия должна выглядеть так:
var regex = /^9908:\d{3,}$/;
Использовать этот:
var match = /^9908:[0-9]{3,}$/.test("9908:123");
alert(match);