Eu quero combinar duas senhas com expressão regular. Por exemplo, eu tenho duas entradas "123456" e "1234567", então o resultado não deve corresponder (falso). E quando eu tiver inserido "123456" e "123456", o resultado deverá corresponder (verdadeiro).
Eu não consegui fazer a expressão. Como eu faço isso?
Respostas:
se você possui uma senha de entrada em uma variável e deseja corresponder exatamente a 123456, as âncoras o ajudarão:
em perl o teste para combinar a senha seria algo como
EDITAR:
Bart Kiers está certo, por que você não usa um strcmp () para isso? toda língua tem à sua maneira
como um segundo pensamento, você pode considerar um mecanismo de autenticação mais seguro :)
fonte
\z
vez de$
./^123456$/
corresponde a ambos123456
e123456
seguido por um avanço de linha, enquanto/^123456\z/
corresponde apenas123456
.Na resposta do malfaux, '^' e '$' foram usados para detectar o início e o final do texto.
Geralmente são usados para detectar o início e o fim de uma linha.
No entanto, este pode ser o caminho correto neste caso.
Mas se você deseja combinar uma palavra exata, a maneira mais elegante é usar '\ b' . Nesse caso, o seguinte padrão corresponderá à frase exata '123456'.
fonte
\bhttp:\/\/www.foo.com\b
corresponderáhttp://www.foo.com=?http://www.foo.com
ao URL como está. A primeira resposta, usando o^
(início) e$
(fim), é o melhor método através desses testadores: regex101.com e regexr.com (o testador incluído em um link abaixo não é muito amigável, é muito melhor)isso garante que sua correspondência não seja precedida por algum caractere, número ou sublinhado e não seja seguida imediatamente por caractere ou número ou sublinhado
portanto, ele corresponderá a "abc" em "abc", "abc.", "abc", mas não em "4abc", nem "abcde"
fonte
\w
combina dígitos e letras, portanto[\w\d]
é redundante.Uma maneira mais direta é verificar a igualdade
no entanto, se você realmente deseja manter a expressão regular,
fonte
Você também pode tentar anexar um espaço no início e final de palavra-chave:
/\s+123456\s+/i
.fonte