regex - preg_match_all - Preg Match Empty String
regex preg_match_all (5)
Como no es fácil hacer coincidir una cadena vacía, pero en general es posible hacer coincidir cualquier cosa que no sea una cadena vacía, considere darle la vuelta y no coincidir con lo contrario (doble negativo).
En este ejemplo, todo lo que no es ( ^
) un sin dígitos ( /D
) para cero o una vez ( ?
):
[^/D]?
(o para ascii específico: [^/x00-/x29/x3a-/xff]?
o unicode: [^/u0000-/u0029/u003a-/uffff]?
)
Coincide con "" ( <cadena vacía> ), " 0
", " 1
", " 9
", pero no con " ", ( <espacio> ),"
A
"(no dígito) o" 123
"(cadena más larga).
¿Cómo preg_match para una cadena nula (vacía)?
Necesito algo como:
/([0-9]|[NULL STRING])/
Con la expresión regular de PHP, puede decir:
/(/d|)/
Puede ser útil ...
Puede usar ^
para unir el comienzo de la línea, y $
para unir el final de la línea, por lo tanto, la expresión regular ^$
coincidiría con una línea / cadena vacía.
Su ejemplo específico (una línea / cadena que contiene un solo dígito o está vacío) sería más fácil de lograr con ^[0-9]?$
.
También puede hacer coincidir un carácter nulo con /0
. ¿Es eso lo que quisiste decir con [NULL STRING]? Esa expresión podría ser /([0-9]|/0)/
.
Tuve que hacer esto, en Java, durante los últimos 4 por un número CC. El campo es opcional por lo que podría estar vacío o 4 dígitos. Mi solución es:
^/d{4}$|^$
Está pasando esto un nulo en los resultados típicos de la moda de Java en una excepción de puntero nulo:
String myString = null;
last4Pattern.matcher(myString).matches(); //Null in this case.
Sin embargo, creo que es más un problema de implementación de Java.