2013-09-30 5 views
0

regex, который говорит, что строка ДОЛЖНА быть размером 9 или 11 символов. Это не могло быть ничем другим. У меня это работало для 9 или более символов, когда я это делал ((\ d {9}) | (\ d {11}) $ Это действительно, когда у меня есть 200 символов, и это не то, что я хочу ...проблемы с регулярным выражением ... делая его конкретным

+0

1) исправить опечатку 2) сообщить нам синтаксис регулярного выражения, который вы используете –

ответ

2

Вам нужно закрепить начало тоже попробовать что-то вроде этого:.

^((\d{9})|(\d{11}))$ 

Кроме того, если он может быть либо 9 или 11 символов, а не только цифры, используйте:

^((.{9})|(.{11}))$ 
1

Вам также понадобится стартовый якорь (^), либо он просто будет соответствовать 9 или 11 цифр в конце строки:

^(\d{9}|\d{11})$ 

Или что то же самое:

^\d{9}(\d\d)?$ 

И если вы просто хотите, чтобы соответствовать 9 или 11 любого характера, использование:

^.{9}(..)?$ 
1
((\d{9})|(\d{11})$ 

... не является допустимым регулярное выражение, потому что отсутствует скобка.

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

((\d{9})|(\d{11}))$ 

Теперь, как на ваш вопрос, вы хотели бы ограничить количество цифр вводится только 9 или 11. Вот как это сделать:

^((\d{9})|(\d{11}))$ 

что мы делаем, определяющее начало и конец ^$ выражения, так что движок регулярных выражений знает, как анализировать данные.

Если вы не определяете начало и конец, выражение по умолчанию является «жадным», поэтому оно соответствует более 9 или 11 цифрам. Поскольку вы только определили конец, он сопоставил все вхождения в начало, которое представляет собой комбинацию из 9 или 11.

Как уже указывалось, если вы хотите совместить символы, вам нужно подставить другое выражение :

^((.{9})|(.{11}))$ 

Если вы хотите, чтобы соответствовать цифры, буквы и символы подчеркивания, вы могли бы использовать это:

^(([A-Za-z_0-9]{9})|([A-Za-z_0-9]{11}))$ 

Однако, в любом случае, выражение может быть легко определен как:

^.{9,11}$ 

И вы бы заменить либо [A-Za-z_0-9] или \d в зависимости от ваших потребностей.

Дополнительные (), которые у вас есть вокруг вашего исходного выражения, не нужны для базового соответствия регулярному выражению. Они необходимы, если вам нужны группы захвата для замены.

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