Регулярное выражение для разрешения диапазона чисел или пустого указателя

У меня есть следующее Регулярное выражение, как я могу изменить его, чтобы также позволить пустой указатель?

[0-9]{5}|[0-9]{10}

Я хотел бы, чтобы это позволило 5 чисел цифры, 10 чисел цифры или пустой указатель

Спасибо

8
задан Jimmy 6 August 2010 в 09:47
поделиться

3 ответа

Если под null вы имеете в виду пустую строку, вы хотите:

^(?:[0-9]{5}|[0-9]{10}|)$
6
ответ дан 5 December 2019 в 06:52
поделиться

Просто добавьте | null :

[0-9]{5}|[0-9]{10}|null

Как вы, наверное, знаете, | - это оператор «или», а строка символов null соответствует слову null. Таким образом, он может быть прочитан как <ваш предыдущий образец> или как null .


Если вы хотите, чтобы образец соответствовал нулевой строке, ответ будет невозможен. То есть, вы не можете заставить, например, Matcher.matches () возвращать истину для нулевой входной строки. Если это то, что вам нужно, вы можете уйти с , используя указанное выше регулярное выражение и сопоставление не на str , а на "" + str , что приведет к "null" if str на самом деле равно null .

13
ответ дан 5 December 2019 в 06:52
поделиться
[0-9]{5}|[0-9]{10}|null

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

^(?:[0-9]{5}|[0-9]{10}|null)$

^ и $ закрепляют регулярное выражение, (?: ...) - это не захватывающая группа, которая содержит чередование.

Изменить: если вы имеете в виду null == "пустая строка", то используйте

^(?:[0-9]{5}|[0-9]{10}|)$
5
ответ дан 5 December 2019 в 06:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: