У меня есть следующее Регулярное выражение, как я могу изменить его, чтобы также позволить пустой указатель?
[0-9]{5}|[0-9]{10}
Я хотел бы, чтобы это позволило 5 чисел цифры, 10 чисел цифры или пустой указатель
Спасибо
Если под null вы имеете в виду пустую строку, вы хотите:
^(?:[0-9]{5}|[0-9]{10}|)$
Просто добавьте | null
:
[0-9]{5}|[0-9]{10}|null
Как вы, наверное, знаете, |
- это оператор «или», а строка символов null
соответствует слову null. Таким образом, он может быть прочитан как <ваш предыдущий образец> или как null
.
Если вы хотите, чтобы образец соответствовал нулевой строке, ответ будет невозможен. То есть, вы не можете заставить, например, Matcher.matches ()
возвращать истину для нулевой входной строки. Если это то, что вам нужно, вы можете уйти с , используя указанное выше регулярное выражение и сопоставление не на str
, а на "" + str
, что приведет к "null"
if str
на самом деле равно null
.
[0-9]{5}|[0-9]{10}|null
должны это сделать. В зависимости от того, как вы используете регулярное выражение, вам может потребоваться привязать его, чтобы быть уверенным, что оно всегда будет соответствовать всей строке , а не только пятизначной подстроке внутри восьмизначной строки:
^(?:[0-9]{5}|[0-9]{10}|null)$
^
и $
закрепляют регулярное выражение, (?: ...)
- это не захватывающая группа, которая содержит чередование.
Изменить: если вы имеете в виду null
== "пустая строка", то используйте
^(?:[0-9]{5}|[0-9]{10}|)$