Как написать регулярное выражение для сопоставления с набором значений? - PullRequest
0 голосов
/ 05 декабря 2009

Я хочу проверить, содержит ли моя строка следующее значение:

Для образцов:

  • 4850324810111981066060
  • 50104810111981066060

Мое состояние

48-57(1 or more time)32(or)10(or)13(then)48(then)32(or)10(or)13(then)111981066060  

Вопрос: Как написать регулярное выражение для указанного выше условия. Скобки указывают на вхождение.

Ответы [ 6 ]

2 голосов
/ 05 декабря 2009

(4[8-9]|5[0-7])+(32|10|13)48(32|10|13)111981066060

1 голос
/ 05 декабря 2009
Regex regex = new Regex(@"(?:4[89]|5[0-7])+(?:32|10|13)48(?:32|10|13)111981066060");
regex.Match(string);

Не проверял, хотя!

1 голос
/ 05 декабря 2009

Check Expresso - он позволяет вам создавать и тестировать ваши регулярные выражения и сразу же создает для вас фрагмент кода C # или сборку .NET. Настоятельно рекомендуется!

0 голосов
/ 05 декабря 2009

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

(4[89]|5[0-7])+(32|10|13)48(32|10|13)111981066060

может быть лучше разбить на поля и проверить эти поля в соответствии с вашей бизнес-логикой, а не полагаться на статическое регулярное выражение, как указано выше.

0 голосов
/ 05 декабря 2009

Вот это:

(48|49|50|51|52|53|54|55|56|57)+(32|10|13)48(32|10|13)111981066060

РЕДАКТИРОВАТЬ: Только что видел Пол ответ и это действительно может быть сокращено до

(4[89]|5[0-7])+(32|10|13)48(32|10|13)111981066060

Единственная разница между подходами hos и mine заключается в том, что он не группирует информацию (поскольку это не требуется), и я не хочу игнорировать ее.

0 голосов
/ 05 декабря 2009

Вы можете проверить регулярные выражения в .NET онлайн, используя Nregex

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