关于正则表达式:正则表达式,用于完全匹配字符串

Regular expression for exact match of a string

我想用正则表达式匹配两个密码。例如,我有两个输入"123456"和"1234567",那么结果应该不匹配(错误)。当我输入"123456"和"123456"时,结果应该是匹配的(真的)。

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


如果您在变量中有输入密码,并且希望与123456完全匹配,那么锚定将帮助您:

1
/^123456$/

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

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

编辑:

巴特·基尔斯是对的,你为什么不用strcmp()呢?每种语言都有它自己的方式

第二种想法是,您可能需要考虑更安全的身份验证机制:)


在马尔福的回答中,"^"和"$"被用来检测文本的开头和结尾。
这些通常用于检测行首和行尾。
但在这种情况下,这可能是正确的方法。
但是如果您希望匹配一个精确的单词,则更优雅的方法是使用''。在这种情况下,下面的模式将与确切的短语"123456"匹配。

/\b123456\b/


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

这可以确保您的匹配前面没有字符、数字或下划线,后面没有字符、数字或下划线。

因此,它将匹配"abc"、"abc."、"abc"中的"abc",但不匹配"4abc",也不匹配"abcde"


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

1
2
3
4
5
if string1 == string2
  puts"match"
else
  puts"not match"
end

但是,如果你真的想坚持正则表达式,

1
string1 =~ /^123456$/


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