¿La expresión regular no coincide con la cadena vacía?

Tengo una expresión regular que funciona bien en mi aplicación, pero también coincide con una cadena vacía, es decir, no se produce ningún error cuando la entrada está vacía. ¿Cómo modifico esta expresión regular para que no coincida con una cadena vacía? Tenga en cuenta que NO QUIERO cambiar ninguna otra funcionalidad de esta expresión regular.

Esta es la expresión regular que estoy usando: ^([0-9\(\)\/\+ \-]*)$

No sé mucho acerca de la formulación de expresiones regex, por lo que estoy preguntando. He buscado una respuesta, pero no he podido encontrar una respuesta directa. Lo más cerca que llegué fue esto: expresión regular para cualquier cosa que no sea una cadena vacía en c # , pero eso realmente no funciona para mí …

Reemplace “*” con “+”, ya que “*” significa “0 o más ocurrencias”, mientras que “+” significa “al menos una vez”.

Puede usar + o la syntax {min, max} :

 ^[0-9\(\)\/\+ \-]{1,}$ 

o

 ^[0-9\(\)\/\+ \-]+$ 

Por cierto: esta es una gran fuente para aprender expresiones regulares (y es divertido): http://regexone.com/

Obviamente, debe reemplazar Reemplazar * con + , como + coincide con 1 o más caracteres. Sin embargo, dentro de la clase de personaje no debes hacer todo lo que escapas que estás haciendo. Su expresión regular se puede simplificar a:

 ^([0-9()\/+ -]+)$ 

Hay muchos tipos de patrones que pueden coincidir con cadenas vacías. La OPgege regex pertenece a un tipo ^.*$ , Y es fácil modificarla para evitar la coincidencia de cadenas vacías al reemplazar el cuantificador * (= {0,} ) (que significa cero o más ) con el + (= {1,} ) cuantificador (es decir, uno o más ), como ya se ha mencionado en los mensajes aquí.

Hay otros tipos de patrones que coinciden con cadenas vacías, y no siempre es obvio cómo evitar que coincidan cadenas vacías.

Aquí hay algunos de esos patrones con soluciones:

Patrones no anclados (coincidentes en cualquier lugar dentro de una cadena)

[^"\\]*(?:\\.[^"\\]*)* (?:[^"\\]|\\.)+

abc||def abc|def (elimina el operador de alternancia extra)

Patrones anclados (coincidentes en cualquier lugar dentro de una cadena)

^a*$ ^a+$ ( + coincide con 1 o más caracteres)

^(a)?(b)?(c)?$ ^(?!$)(a)?(b)?(c?)$ (el lookAhead negativo (?!$) falla el partido si el final de la cadena está al comienzo de la cadena)
o ^(?=.)(a)?(b)?(c?)$ (el (?=.) lookahead positivo requiere al menos un solo carácter,. puede coincidir o no con los caracteres de salto de línea en función de los modificadores / regex sabor)

^$|^abc$ ^abc$ (elimina la ^$ alternativa que permite que una expresión regular haga coincidir una cadena vacía)

^(?:abc|def)?$ ^(?:abc|def)$ (elimina el ? cuantificador que hizo que el grupo (?:abc|def) opcional)