Pregunta

¿Cómo preg_match para una cadena nula (vacía) ??

Necesito algo como:

/([0-9]|[NULL STRING])/
¿Fue útil?

Solución

Puede usar ^ para hacer coincidir el comienzo de la línea y $ para hacer coincidir 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) se lograría más fácilmente con ^[0-9]?$.

Otros consejos

Con PHP regex puedes decir:

/(\d|)/

Puede ser útil ...

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 para un número CC. El campo es opcional, por lo que puede estar vacío o tener 4 dígitos. Mi solución es:

^\d{4}$|^$

El paso de esto es un nulo en los resultados típicos 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.

Como no es fácil hacer coincidir una cadena vacía, pero generalmente es posible hacer coincidir cualquier cosa que no sea una cadena vacía, considere darle la vuelta y no hacer coincidir el opuesto (doble negativo).
En este ejemplo, todo lo que es no (^) un no -digit (\D) por 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 un " " ;, ( < espacio > ), "A " (sin dígitos) o "123 " (cualquier cadena más larga).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top