Pergunta
Como preg_match para um nulo (vazio) Cadeia ??
Eu preciso de algo como:
/([0-9]|[NULL STRING])/
Solução
Você pode usar ^
para corresponder começando-de-linha, e $
para coincidir com end-of-line, assim, a ^$
expressão regular iria coincidir com uma linha vazia / string.
O seu exemplo específico (uma linha / string contendo um único dígito ou estar vazio) seria mais fácil ser alcançado com ^[0-9]?$
.
Outras dicas
Com regex do PHP você pode simplesmente dizer:
/(\d|)/
Pode ser útil ...
Você também pode combinar um caractere nulo com \0
. É isso que você quer dizer com [TEXTO NULL]?
Essa expressão poderia ser /([0-9]|\0)/
.
Eu tinha que fazer isso, em java, para o último 4 para um número CC. O campo é opcional para que ele poderia estar vazio, ou 4 dígitos. Minha solução é:
^\d{4}$|^$
A está passando este um nulo nos resultados típicos de java de moda em uma exceção de ponteiro nulo:
String myString = null;
last4Pattern.matcher(myString).matches(); //Null in this case.
No entanto, sinto que é mais de um problema de implementação Java.
Como não é fácil de combinar uma cadeia vazia, mas geralmente é possível para combinar qualquer coisa que não é uma cadeia vazia, considere dar a volta e não coincidir com o oposto (duplo negativo).
Neste exemplo, tudo o que é não (^
) a não com quatro dígitos (\D
) para zero ou uma vez (?
):
[^\D]?
(ou para ASCII específica: [^\x00-\x29\x3a-\xff]?
[^\u0000-\u0029\u003a-\uffff]?
Jogos "um" ( 0
", " 1
" .. " 9
"mas não um "", (
A
"(não-dígito) ou" 123
"(qualquer seqüência mais longa).