Preg Match пустая строка - PullRequest
       7

Preg Match пустая строка

32 голосов
/ 27 ноября 2009

Как preg_match для пустой (пустой) строки ??

Мне нужно что-то вроде:

/([0-9]|[NULL STRING])/

Ответы [ 5 ]

61 голосов
/ 27 ноября 2009

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

Ваш конкретный пример (строка / строка, содержащая одну цифру или пустая) будет проще всего достичь с помощью ^[0-9]?$.

5 голосов
/ 29 декабря 2009

С помощью регулярного выражения PHP вы можете просто сказать:

/(\d|)/

Это может быть полезно ...

1 голос
/ 11 июля 2013

Я должен был сделать это, в java, для последних 4 для номера CC. Поле является необязательным, поэтому оно может быть пустым или содержать 4 цифры. Мое решение:

^\d{4}$|^$

Передача этого нулевого значения в типичной форме Java приводит к исключению нулевого указателя:

String myString = null;
last4Pattern.matcher(myString).matches(); //Null in this case.

Однако я чувствую, что это скорее проблема реализации Java.

1 голос
/ 27 ноября 2009

Вы также можете сопоставить нулевой символ с \0. Это то, что вы имели в виду [NULL STRING]? Это выражение может быть /([0-9]|\0)/.

0 голосов
/ 26 апреля 2018

Поскольку сопоставить пустую строку нелегко, но обычно можно сопоставить все, что не является пустой строкой, рассмотрите возможность перевернуть ее, и не соответствует напротив (двойной отрицательный).
В этом примере все, что не (^) * не -разрядный (\D) для нуля или один раз (?):

[^\D]?

(или для конкретного ascii: [^\x00-\x29\x3a-\xff]?, или Unicode: [^\u0000-\u0029\u003a-\uffff]?)

Соответствует "" ( <пустая строка> ), "0", "1" .. "9 ", но не" ", ()," A "(без цифр) или" 123 "(любая более длинная строка).

...