¿Cómo hago coincidir una cadena completa con una expresión regular?

Resuelto Micah asked hace 14 años • 8 respuestas

Necesito una expresión regular que solo encuentre coincidencias donde toda la cadena coincida con mi consulta.

Por ejemplo, si hago una búsqueda de películas con el nombre "Octubre Rojo", solo quiero encontrar coincidencias con ese título exacto (no distingue entre mayúsculas y minúsculas), pero no con títulos como "La caza del Octubre Rojo". No estoy muy seguro de saber cómo hacer esto. ¿Nadie sabe?

¡Gracias!

Micah avatar Nov 08 '10 18:11 Micah
Aceptado

Pruebe la siguiente expresión regular:

^Red October$

De forma predeterminada, las expresiones regulares distinguen entre mayúsculas y minúsculas. Marca ^el inicio del texto coincidente y $el final.

Pieter van Ginkel avatar Nov 08 '2010 11:11 Pieter van Ginkel

Generalmente, y con la configuración predeterminada, ^los $anclajes son una buena forma de garantizar que una expresión regular coincida con una cadena completa.

Sin embargo, algunas advertencias:

Si tiene alternancia en su expresión regular, asegúrese de encerrar su expresión regular en un grupo que no capture antes de rodearla con ^y $:

^foo|bar$

por supuesto es diferente de

^(?:foo|bar)$

Además, ^y $puede adquirir un significado diferente (inicio/fin de línea en lugar de inicio/fin de cadena ) si se configuran ciertas opciones. En los editores de texto que admiten expresiones regulares, este suele ser el comportamiento predeterminado. En algunos lenguajes, especialmente Ruby, este comportamiento ni siquiera se puede desactivar.

Por lo tanto, hay otro conjunto de anclajes que se garantiza que solo coincidirán al principio/final de toda la cadena:

\Acoincide al comienzo de la cadena.

\Zcoincide al final de la cadena o antes de un salto de línea final.

\zcoincide al final de la cadena.

Pero no todos los lenguajes admiten estos anclajes, sobre todo JavaScript.

Tim Pietzcker avatar Nov 08 '2010 12:11 Tim Pietzcker

Sé que puede que sea un poco tarde para responder esto, pero tal vez le resulte útil a alguien más.

La forma más sencilla:

var someString = "...";
var someRegex = "...";
var match = Regex.Match(someString , someRegex );
if(match.Success && match.Value.Length == someString.Length){
    //pass
} else {
    //fail
}
Zixav avatar Mar 22 '2016 16:03 Zixav