Preg Соответствует Пустой строке
-
05-07-2019 - |
Вопрос
Как настроить preg_match для нулевой (пустой) строки??
Мне нужно что-то вроде:
/([0-9]|[NULL STRING])/
Решение
Вы можете использовать ^
для соответствия начала строки и $
для соответствия конца строки, поэтому регулярное выражение ^$
будет соответствовать пустой строке / строке. Р>
Ваш конкретный пример (строка / строка, содержащая одну цифру или пустая) будет проще всего реализовать с помощью ^[0-9]?$
.
Другие советы
С помощью регулярного выражения PHP вы можете просто сказать:
/(\d|)/
Это может быть полезно ...
Вы также можете сопоставить нулевой символ с \0
. Это то, что вы имели в виду [NULL STRING]?
Это выражение может быть /([0-9]|\0)/
.
Я должен был сделать это, в java, для последних 4-х для номера CC. Поле является необязательным, поэтому оно может быть пустым или содержать 4 цифры. Мое решение:
^\d{4}$|^$
Передача этого нулевого значения в типичной форме Java приводит к исключению нулевого указателя:
String myString = null;
last4Pattern.matcher(myString).matches(); //Null in this case.
Однако я чувствую, что это скорее проблема реализации Java.
Поскольку сопоставить пустую строку непросто, но, как правило, возможно сопоставить все, что не является пустой строкой, подумайте о том, чтобы перевернуть ее и нет соответствовать противоположный (двойное отрицание).
В этом примере все, что есть нет (^
) а не-цифра (\D
) для нулевого или одноразового использования (?
):
[^\D]?
(или для конкретного ascii: [^\x00-\x29\x3a-\xff]?
, или юникод: [^\u0000-\u0029\u003a-\uffff]?
)
Соответствует значку "" (<empty string="">), "0
", "1
" .. "9
", но не "", (<space>), "
A
" (без цифр) или "123
" (любая более длинная строка).