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

Chi*_*ayu 128 regex

我想用正则表达式匹配两个密码.例如,我有两个输入"123456"和"1234567",那么结果应该不匹配(false).当我输入"123456"和"123456"时,结果应匹配(true).

我无法表达.任何人都可以帮助我.

use*_*419 152

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

/^123456$/
Run Code Online (Sandbox Code Playgroud)

在perl中,匹配密码的测试就像是

print "MATCH_OK" if ($input_pass=~/^123456$/);
Run Code Online (Sandbox Code Playgroud)

编辑:

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

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

  • 仅供参考:对我来说,只有^ 123456 $在下面链接的测试器中有效。 (2认同)
  • **重要**:在Perl和PCRE中,您希望使用\ z而不是$。`/ ^ 123456 $ /`匹配`123456`和`123456`后跟换行符,而`/​​ ^ 123456 \ z /`只匹配`123456`。 (2认同)

pra*_*eth 135

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

/\b123456\B /

  • 你的回答是误导性的,会导致许多人出现严重问题.例如,使用您的方法\ bhttp://www.foo.com\b将匹配http:// http://www.bar.com/?http://www.foo.com,这绝对不是完全匹配,如OP中所要求的.对于使用包含非单词字符的URL或密码(同样是OP请求的)的人来说,这将导致严重的问题.你应该澄清你的答案,以免其他人误入歧途. (20认同)
  • 如果您认为我的回答具有误导性或错误,您仍然可以发布您自己的答案(就像其他人一样)或在我的帖子下发表评论,解释您的建议。 (2认同)
  • 你必须解释一下.'' 是一只红鲱鱼.\ bhttp:// www\.foo\.com\b仍会为http:// http://www.bar.com/?http://www.foo.com生成匹配项.这不是OP想要的. (2认同)

小智 27

(?<![\w\d])abc(?![\w\d])
Run Code Online (Sandbox Code Playgroud)

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

所以它将匹配"abc","abc.","abc"中的"abc",但不匹配"4abc",也不匹配"abcde"

  • 问题的标题具有误导性;他试图确保两个“整个字符串”完全相同。另外,“\w”既匹配数字又匹配字母,因此“[\w\d]”是多余的。 (2认同)

kur*_*umi 6

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

if string1 == string2
  puts "match"
else
  puts "not match"
end
Run Code Online (Sandbox Code Playgroud)

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

string1 =~ /^123456$/
Run Code Online (Sandbox Code Playgroud)


Bhu*_*dha 5

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