정규식으로 두 암호를 일치시키고 싶습니다. 예를 들어 두 개의 입력 "123456"과 "1234567"이 있으면 결과가 일치하지 않아야합니다 (거짓). 그리고 "123456"과 "123456"을 입력하면 결과가 일치해야합니다 (true).
나는 표현을 할 수 없었다. 어떻게합니까?
정규식으로 두 암호를 일치시키고 싶습니다. 예를 들어 두 개의 입력 "123456"과 "1234567"이 있으면 결과가 일치하지 않아야합니다 (거짓). 그리고 "123456"과 "123456"을 입력하면 결과가 일치해야합니다 (true).
나는 표현을 할 수 없었다. 어떻게합니까?
답변:
변수에 입력 암호가 있고 정확히 123456을 일치 시키려면 앵커가 도움이 될 것입니다.
/^123456$/
펄에서 암호와 일치하는 테스트는 다음과 같습니다.
print "MATCH_OK" if ($input_pass=~/^123456$/);
편집하다:
bart kiers 는 tho입니다. 왜 strcmp ()를 사용하지 않습니까? 모든 언어에는 고유 한 방식이 있습니다
두 번째로 더 안전한 인증 메커니즘을 고려할 수 있습니다. :)
\z
대신에 원합니다 $
. /^123456$/
모두 일치 123456
하고 123456
그 뒤에 줄 바꿈이있는 반면 /^123456\z/
에만 일치합니다 123456
.
malfaux의 대답에서 '^' 과 '$' 는 텍스트의 시작과 끝을 감지하는 데 사용되었습니다.
이들은 일반적으로 줄의 시작과 끝을 감지하는 데 사용됩니다.
그러나이 경우 올바른 방법 일 수 있습니다.
그러나 정확한 단어를 찾으려면 '\ b' 를 사용하는 것이 더 우아한 방법입니다 . 이 경우 다음 패턴은 정확한 문구 '123456'과 일치합니다.
/ \ b123456 \ b /
\bhttp:\/\/www.foo.com\b
일치 하는 것이 정확합니다 http://www.foo.com=?http://www.foo.com
. ^
(시작) 및 $
(종료)를 사용하는 첫 번째 응답 은 다음 테스터를 통한 최상의 방법입니다. regex101.com 및 regexr.com (아래 링크에 포함 된 테스터는 사용자에게 친숙하지 않으므로 훨씬 좋습니다)
(?<![\w\d])abc(?![\w\d])
이렇게하면 일치 항목 앞에 일부 문자, 숫자 또는 밑줄이 표시되지 않고 바로 문자 또는 숫자 또는 밑줄이 표시되지 않습니다
"abc", "abc.", "abc"의 "abc"와 일치하지만 "4abc"또는 "abcde"와는 일치하지 않습니다.
\w
문자뿐만 아니라 숫자도 일치하므로 [\w\d]
중복됩니다.