用于字符串精确匹配的正则表达式

时间:2011-04-22 06:24:41

标签: regex

我希望将两个密码与正则表达式匹配。例如,我有两个输入“123456”和“1234567”,那么结果应该不匹配(false)。当我输入“123456”和“123456”时,结果应匹配(true)。

我无法表达。我该怎么做?

5 个答案:

答案 0 :(得分:135)

如果您在变量中输入密码并且想要完全匹配123456,那么锚点将帮助您:

/^123456$/

在perl中,匹配密码的测试类似于

print "MATCH_OK" if ($input_pass=~/^123456$/);

编辑:

bart kiers是对的,为什么不为此使用strcmp()?每种语言都有自己的方式

作为第二个想法,您可能想要考虑更安全的身份验证机制:)

答案 1 :(得分:109)

在malfaux的回答'^''$'已用于检测文本的开头和结尾。
这些通常用于检测线的开始和结束。
然而,在这种情况下,这可能是正确的方法。
但如果你想匹配一个确切的词,更优雅的方法是使用'\ b'。在这种情况下,下面的模式将匹配确切的短语'123456'。

  

/ \ b123456 \ B /

答案 2 :(得分:25)

(?<![\w\d])abc(?![\w\d])

这可确保您的匹配前面没有某个字符,数字或下划线,并且不会立即跟随字符或数字或下划线

所以它将匹配“abc”,“abc。”,“abc”中的“abc”,但不匹配“4abc”,也不匹配“abcde”

答案 3 :(得分:6)

更直接的方法是检查是否相等

if string1 == string2
  puts "match"
else
  puts "not match"
end

然而,如果你真的想坚持正则表达式,

string1 =~ /^123456$/

答案 4 :(得分:2)

您也可以尝试在关键字的开头和结尾添加空格:/\s+123456\s+/i