Patrick Skelton Ответов: 2

Как создать регулярное выражение, принимающее только 1-14 цифр?


Я знаю, что буду пинать себя, когда увижу ответ, но я играл с этим в течение часа и не могу понять, как написать регулярное выражение, чтобы принять 1-14 цифр в однострочной строке и отклонить что-либо еще. Это предназначено для использования внутри WPF ValidationRule.

Обратите внимание, что это не попытка найти такие подстроки в тексте; это предназначено для того, чтобы отклонить все, что не соответствует шаблону, поэтому 01234567890123 это прекрасно но 01234567890123X не является.

Что я уже пробовал:

Ничего из этого не работает:

^[0-9]{1,14}$

[0-9]{1,14}$

^[0-9]{1,14}

[0-9]{1,14}

Это почти работает...

\b[0-9]{1,14}\b

..но по какой-то причине примет открытую скобку, поэтому она будет соответствовать 1234(, который он должен отвергнуть.

Tomas Takac

Вы должны обновить свой вопрос с помощью кода, который вы используете для тестирования. FYI ^[0-9]{1,14}$ работает так, как и ожидалось для меня с приведенными вами примерами.

2 Ответов

Рейтинг:
6

Kornfeld Eliyahu Peter

^[0-9]{1,14}$

Однако проблема заключается в том, как механизм регулярных выражений интерпретирует ^ и $...
Если вы находитесь в однострочном режиме, движок смотрит на вход как на одну строку, а ^ и $ означают начало и конец всего входа!
В многострочном режиме (/м или Регулярные выражения.Многострочный[^]) меняется мменаинг ^ и$, и теперь это начало и конец строки внутри всего входного сигнала...
Regex oRegex = new Regex("^[0-9]{1,14}$", RegexOptions.Multiline);


Рейтинг:
15

Patrice T

Цитата:
^[0-9]{1,14}$

Этот должен подойти. У твоей неудачи есть и другая причина. Вы должны дать более подробную информацию.

Всего несколько интересных ссылок, которые помогут построить и отладить регулярное выражение.
Вот ссылка на документацию по регулярным выражениям:
perlre - perldoc.perl.org[^]
Вот ссылки на инструменты, помогающие создавать регулярные выражения и отлаживать их:
.Объем тестер регулярное выражение - регулярное выражение шторм[^]
Регулярное Средство Выражения Эспрессо [^]
Это показывает вам регулярное выражение в виде красивого графика, который действительно полезен для понимания того, что делает регулярное выражение:
Debuggex: онлайн-тестер визуальных регулярных выражений. JavaScript, Python и PCRE.[^]


Patrick Skelton

Приведенное выше выражение действительно работает так, как и ожидалось, используя отличный Debuggex (спасибо за ссылку). И когда я возвращаюсь к коду, я обнаруживаю, что он действительно работает так, как ожидалось. Может быть, я каким-то образом тестировал другой фрагмент кода, отличный от того, который редактировал. Дох! Я принимаю более раннее замечание Томаса о том, что я должен был включить некоторый тестовый код, который быстро показал бы, что виновато что-то другое, чем регулярное выражение. Спасибо вам всем за помощь.