我想用正则表达式匹配两个密码。例如,我有两个输入“123456”和“1234567”,那么结果应该不匹配(false)。当我输入“123456”和“123456”时,结果应该匹配(true)。
我无法表达。我该怎么做?
我想用正则表达式匹配两个密码。例如,我有两个输入“123456”和“1234567”,那么结果应该不匹配(false)。当我输入“123456”和“123456”时,结果应该匹配(true)。
我无法表达。我该怎么做?
当前回答
(?<![\w\d])abc(?![\w\d])
这确保匹配的前面没有字符、数字或下划线,后面也没有字符、数字或下划线
所以它会匹配abc中的abc,但不是4abc,也不是abcde
其他回答
您还可以尝试在关键字的开头和结尾添加一个空格:/\s+123456\s+/i。
一个更直接的方法是检查是否相等
if string1 == string2
puts "match"
else
puts "not match"
end
然而,如果你真的想坚持使用正则表达式,
string1 =~ /^123456$/
在malfaux的回答中,'^'和'$'被用来检测文本的开头和结尾。 它们通常用于检测一行的开始和结束。然而,在这种情况下,这可能是正确的方法。但如果你想匹配一个精确的单词,更优雅的方法是使用'\b'。在这种情况下,下面的模式将匹配确切的短语“123456”。
b123456 \ b /
(?<![\w\d])abc(?![\w\d])
这确保匹配的前面没有字符、数字或下划线,后面也没有字符、数字或下划线
所以它会匹配abc中的abc,但不是4abc,也不是abcde
如果你在一个变量中有一个输入密码,你想要精确匹配123456,那么锚定将帮助你:
/^123456$/
在perl中,匹配密码的测试类似于
print "MATCH_OK" if ($input_pass=~/^123456$/);
编辑:
巴特基尔斯是对的,但为什么不使用strcmp()呢?每种语言都有它自己的方式
再考虑一下,你可能需要考虑一种更安全的身份验证机制:)