Domanda
Come preg_match per una stringa null (vuota) ??
Ho bisogno di qualcosa del tipo:
/([0-9]|[NULL STRING])/
Soluzione
Puoi usare ^
per abbinare l'inizio della linea e $
per abbinare la fine della linea, quindi l'espressione regolare ^$
corrisponderebbe a una linea / stringa vuota.
Il tuo esempio specifico (una riga / stringa contenente una singola cifra o vuota) sarebbe più semplice con ^[0-9]?$
.
Altri suggerimenti
Con regex PHP puoi semplicemente dire:
/(\d|)/
Potrebbe essere utile ...
Puoi anche abbinare un carattere null a \0
. È quello che intendevi con [NULL STRING]?
Quell'espressione potrebbe essere /([0-9]|\0)/
.
Ho dovuto farlo, in Java, per gli ultimi 4 per un numero CC. Il campo è facoltativo, pertanto potrebbe essere vuoto o composto da 4 cifre. La mia soluzione è:
^\d{4}$|^$
Il passaggio di questo valore null nella tipica modalità java comporta un'eccezione puntatore null:
String myString = null;
last4Pattern.matcher(myString).matches(); //Null in this case.
Tuttavia, ritengo che si tratti di un problema di implementazione di Java.
Dato che non è facile abbinare una stringa vuota ma in genere è possibile abbinare qualsiasi cosa che non sia una stringa vuota, considera di capovolgerla e non corrisponde al opposto (doppio negativo).
In questo esempio, tutto ciò che è non (^
) una non -digit (\D
) per zero o una volta (?
):
[^\D]?
(o per ascii specifici: [^\x00-\x29\x3a-\xff]?
o unicode: [^\u0000-\u0029\u003a-\uffff]?
)
Corrisponde a un " " ( < stringa vuota > ), "0
" ;, " 1
<> quot; .. "9
" ;, ma non un " " ;, ( < spazio > ), "
A
" (senza cifre) o "123
" (qualsiasi stringa più lunga).