Expresión regular para coincidencia exacta de una cadena

Resuelto Chirayu asked hace 13 años • 7 respuestas

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?

Chirayu avatar Apr 22 '11 13:04 Chirayu
Aceptado

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 :)

user237419 avatar Apr 22 '2011 06:04 user237419

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/

prageeth avatar Oct 25 '2012 09:10 prageeth
(?<![\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"

Aedna avatar Apr 16 '2014 19:04 Aedna

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$/
kurumi avatar Apr 22 '2011 06:04 kurumi