Expresión regular para coincidencia exacta de una cadena
Quiero hacer coincidir dos contraseñas con expresiones regulares. Por ejemplo, tengo dos entradas "123456" y "1234567", entonces el resultado no debería coincidir (falso). Y cuando ingresé "123456" y "123456", el resultado debería coincidir (verdadero).
No pude hacer la expresión. ¿Cómo lo hago?
Si tiene una contraseña ingresada en una variable y desea que coincida exactamente con 123456, los anclajes lo ayudarán:
/^123456$/
en Perl la prueba para hacer coincidir la contraseña sería algo así como
print "MATCH_OK" if ($input_pass=~/^123456$/);
EDITAR:
Bart Kiers tiene razón, ¿por qué no usas strcmp() para esto? cada idioma lo tiene a su manera
Pensándolo bien, es posible que desee considerar un mecanismo de autenticación más seguro :)
En la respuesta de Malfaux, se han utilizado '^' y '$' para detectar el principio y el final del texto.
Suelen utilizarse para detectar el principio y el final de una línea.
Sin embargo, esta puede ser la forma correcta en este caso.
Pero si desea hacer coincidir una palabra exacta, la forma más elegante es usar '\b' . En este caso, el siguiente patrón coincidirá con la frase exacta '123456'.
/\b123456\b/
(?<![\w\d])abc(?![\w\d])
esto asegura que su coincidencia no esté precedida por algún carácter, número o guión bajo y que no sea seguida inmediatamente por un carácter, número o guión bajo.
por lo que coincidirá con "abc" en "abc", "abc.", "abc", pero no con "4abc" ni con "abcde"
Una forma más sencilla es comprobar la igualdad.
if string1 == string2
puts "match"
else
puts "not match"
end
sin embargo, si realmente quieres ceñirte a la expresión regular,
string1 =~ /^123456$/