Как исправить это регулярное выражение? - PullRequest
1 голос
/ 28 июля 2010

Нужна помощь, чтобы исправить одну небольшую вещь в этом регулярном выражении

^\d{2}\-\d{3}\-\d{6}

Это проверяет этот формат 11-111-111111.Работает нормально.но последний (6 цифр) также проверяет более 6 цифр.Это означает, что если я поставлю 11-111-11111111 (8 цифр в последней части), приведенное выше регулярное выражение проверяет его?

Может кто-нибудь сказать мне, как ограничить его только 6 цифрами?

Ответы [ 9 ]

11 голосов
/ 28 июля 2010

Также пометьте конец строки ($), как вы это сделали с началом строки (^):

^\d{2}\-\d{3}\-\d{6}$

Теперь вся строка должна соответствовать этому шаблону.

5 голосов
/ 28 июля 2010

Поместите $ в конце регулярного выражения.$ является привязкой конца строки или строки и гарантирует, что в последнем разделе будет не более 6 цифр (поскольку строка должна заканчиваться после этого).

2 голосов
/ 28 июля 2010

Вы хотите, чтобы вы использовали $ для обозначения конца строки, точно так же, как вы используете ^ для обозначения начала строки.

1 голос
/ 28 июля 2010
^\d{2}-\d{3}-\d{6}(?:\D|$)

Последняя часть (?:\D|$) соответствует всему, что не является числом или концом строки

1 голос
/ 28 июля 2010

Если вы хотите перехватить строку, даже если это не конец строки, используйте

^\d{2}\-\d{3}\-\d{6}\D

для указания того, что после 6 цифр должна быть не цифра.

1 голос
/ 28 июля 2010

Я смог сделать это, добавив $ в конец регулярного выражения.Это приведет к тому, что он распознает только 6 цифр в конце совпадения.

В настоящее время он соответствует вашей 8-значной записи, поскольку начинается с первых 6 цифр.

0 голосов
/ 28 июля 2010

Основы вашего регулярного выражения есть, но вы должны поместить границы.

Следующее регулярное выражение соответствует тому, что вы хотите и захватывает числовую строку.Он связан с обоих концов не цифрой или началом / концом строки.

(?:[^\d]|^)(\d{2}-\d{3}-\d{6})(?:[^\d]|$)

0 голосов
/ 28 июля 2010
(^\d{2}\-\d{3}\-\d{6})\D

будет соответствовать чему-либо с 6 цифрами, за которыми следует не цифра, при условии, что вы на самом деле не ожидаете, что строка на этом закончится.

0 голосов
/ 28 июля 2010

Поставьте $ в конце вашего регулярного выражения.

Этот символ обозначает «конец выражения».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...