Normal ifadeyle iki parolayı eşleştirmek istiyorum. Örneğin, "123456" ve "1234567" adlı iki girişim var, bu durumda sonuç eşleşmemelidir (yanlış). Ve "123456" ve "123456" girdiğimde sonuç eşleşmelidir (doğru).
İfadeyi yapamadım. Nasıl yaparım?
Normal ifadeyle iki parolayı eşleştirmek istiyorum. Örneğin, "123456" ve "1234567" adlı iki girişim var, bu durumda sonuç eşleşmemelidir (yanlış). Ve "123456" ve "123456" girdiğimde sonuç eşleşmelidir (doğru).
İfadeyi yapamadım. Nasıl yaparım?
Yanıtlar:
Bir değişkende bir giriş şifreniz varsa ve tam olarak 123456 ile eşleşmek istiyorsanız bağlantı noktaları size yardımcı olacaktır:
/^123456$/
perl'de şifre eşleştirme testi şu şekilde olacaktır:
print "MATCH_OK" if ($input_pass=~/^123456$/);
DÜZENLE:
Barmenleri doğru, neden bunun için strcmp () kullanmıyorsunuz? her dilde kendine göre var
ikinci bir düşünce olarak, daha güvenli bir kimlik doğrulama mekanizması düşünmek isteyebilirsiniz :)
\z
yerine $
. /^123456$/
hem maçları 123456
ve 123456
süre, bir satır arkasından /^123456\z/
maçları sadece 123456
.
Malfaux'un cevabında '^' ve '$' metnin başlangıcını ve sonunu tespit etmek için kullanılmıştır.
Bunlar genellikle bir satırın başlangıcını ve sonunu tespit etmek için kullanılır.
Ancak bu durumda bu doğru yol olabilir.
Ancak bir kelimeyi tam olarak eşleştirmek istiyorsanız, daha şık olan yol '\ b' kullanmaktır . Bu durumda aşağıdaki kalıp, '123456 'kelime öbeğiyle tam olarak eşleşecektir.
/ \ b123456 \ b /
\bhttp:\/\/www.foo.com\b
eşleşecek doğru http://www.foo.com=?http://www.foo.com
. İlk yanıt, ^
(başlangıç) ve $
(son) kullanarak bu testçiler aracılığıyla en iyi yöntemdir: regex101.com ve regexr.com (aşağıdaki bağlantıda bulunan test cihazı pek kullanıcı dostu değildir, bunlar çok daha iyidir)
(?<![\w\d])abc(?![\w\d])
Bu, eşleşmenizin önünde bir karakter, sayı veya alt çizgi olmadığından ve hemen ardından karakter veya sayı veya alt çizgi gelmediğinden emin olur
bu nedenle "abc", "abc.", "abc" içindeki "abc" ile eşleşecek, ancak "4abc" veya "abcde" ile eşleşmeyecektir
\w
harflerle olduğu kadar rakamlarla da eşleşir, bu yüzden [\w\d]
fazlalıktır.
Daha basit bir yol, eşitliği kontrol etmektir
if string1 == string2
puts "match"
else
puts "not match"
end
ancak, normal ifadeye gerçekten bağlı kalmak istiyorsanız,
string1 =~ /^123456$/
Ayrıca başlangıç ve anahtar kelimenin sonuna bir boşluk ekleme deneyebilirsiniz: /\s+123456\s+/i
.