Справка по выражениям RegEx - PullRequest
1 голос
/ 24 июня 2009

Мне нужно регулярное выражение, которое не позволит кому-либо продолжать проверять, если после слова «box» или «Box» или «BOX» введите цифры. Чтобы это работало, нужно выполнить оба условия: поле слова и цифры, а не одно или другое. Кто-нибудь знает, как это написать?

EDIT:

Эй, ребята, я пробовал несколько, и проблема в том, что он предотвращает обычные адреса, такие как 1234 S. Something Lane. Все, что я хочу предотвратить, - это если пользователь вводит что-то вроде p.o. поле 1234. Мы вычисляем что-либо со словом «коробка» и числа после него не должны быть приняты.

спасибо

Ответы [ 7 ]

6 голосов
/ 24 июня 2009

Отредактировано после уточнения вопроса:

new Regex(@"\bbox\s*\d+", RegexOptions.IgnoreCase);

Это будет соответствовать «коробке» как отдельному слову, за которым необязательно следует пробел, а затем число в любом месте входной строки. Таким образом, это будет соответствовать:

  • box12
  • Коробка 12
  • P.O. Коробка 12
  • BOX 12a

Это не будет соответствовать:

  • Бокстри 12
  • Бумбокс 12
  • Box Pog
  • Box Pog 12

(Было бы очень полезно, если бы ваш первоначальный вопрос объяснил, что вы на самом деле пытались сделать!)

5 голосов
/ 24 июня 2009
(box|Box|BOX)[0-9]+

РЕДАКТИРОВАТЬ после уточнения вопроса:

Полагаю, вам нужен поиск без учета регистра:

box\s*\d+
  • \s*: любое количество пробелов
  • \d + : хотя бы одно число

Вы можете определить количество цифр, если хотите. Пример для 3-5 цифр:

box\s*\d{3,5}
0 голосов
/ 24 июня 2009

Не забудьте опцию «почта».

^ (p (ost |.) * O (ffice |.))? Box * [0-9] + $

0 голосов
/ 24 июня 2009

это:

box|Box|BOX\d+

будет соответствовать этим конкретным случаям: Box, Box, BOX и всем этим, за которыми следуют цифры, но также будет возвращать true в этом случае, например:

asBox123asdasd

Если вы хотите получить значение true, например, если строка точно box123, вы должны использовать:

^box|Box|BOX\d+$

вместо

0 голосов
/ 24 июня 2009

вы пробовали что-то вроде

/box\d+/

плюс IgnoreCase?

0 голосов
/ 24 июня 2009

Если вы покажете пример формата, который вы хотите принять, людям будет проще ответить на этот вопрос.

Если вы хотите добавить префикс строки к любому варианту «Box», а затем к числам, что-то вроде этого должно работать (убедитесь, что вы используете RegexOptions.IgnoreCase)

^box\d+$

Что будет соответствовать для ...

box1
BOX1234567
bOx3
...etc...
0 голосов
/ 24 июня 2009

По моему опыту, проще написать RegEx для строгого соответствия ожидаемому случаю, чем пытаться исключить исключительный случай.

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