Регулярное выражение для точного соответствия строки
Я хочу сопоставить два пароля с регулярным выражением. Например, у меня есть два входа "123456" и "1234567", тогда результат не должен совпадать (false). И когда я ввел "123456" и "123456", тогда результат должен совпадать (true).
Я не мог сделать выражение. Как мне это сделать?
Ответы
Ответ 1
если у вас есть пароль ввода в переменной, и вы хотите точно соответствовать 123456, тогда анкеры помогут вам:
/^123456$/
в perl тест для сопоставления пароля будет выглядеть как
print "MATCH_OK" if ($input_pass=~/^123456$/);
EDIT:
bart kiers прав, почему вы не используете для этого strcmp()? каждый язык имеет его по-своему.
как вторая мысль, вам может потребоваться более безопасный механизм аутентификации:)
Ответ 2
В ответе malfaux '^' и '$' используется для определения начала и конца текста.
Они обычно используются для определения начала и конца строки.
Однако в этом случае это может быть правильным.
Но если вы хотите совместить точное слово, более элегантным способом является использование '\ b'. В этом случае следующий шаблон будет соответствовать точной фразе '123456 '.
/\ b123456\Ь/
Ответ 3
(?<![\w\d])abc(?![\w\d])
это гарантирует, что вашему совпадению не предшествует какой-либо символ, номер или знак подчеркивания и не следует сразу по символу или номеру или подчеркиванию
поэтому он будет соответствовать "abc" в "abc" , "abc.", "abc" , но не "4abc", ни "abcde"
Ответ 4
Более прямым способом является проверка равенства
if string1 == string2
puts "match"
else
puts "not match"
end
однако, если вы действительно хотите придерживаться регулярного выражения,
string1 =~ /^123456$/
Ответ 5
Вы также можете попробовать добавить пространство в начале и конце ключевого слова: /\s+123456\s+/i
.