Вопрос

Как настроить 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" (любая более длинная строка).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top