Регулярное выражение для точного совпадения строки


Я хочу сопоставить два пароля с регулярным выражением. например, у меня есть два входа "123456" и "1234567", то результат должен быть не совпадать(false). И когда я ввел "123456 "и" 123456", то результат должен совпадать(true).

Я не мог сделать выражение. Может ли кто-нибудь помочь мне плз.

5 86

5 ответов:

Если у вас есть входной пароль в переменной, и вы хотите точно соответствовать 123456, то якоря помогут вам:

/^123456$/

в perl тест на соответствие пароля будет что-то вроде

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

EDIT:

Барт kiers правильно Тхо, почему бы вам не использовать strcmp() для этого? каждый язык по-своему

как вторая мысль, вы можете рассмотреть более безопасный механизм аутентификации:)

в ответ малфо '^' и '$' используется для определения начала и конца текста.
они обычно используются для определения начала и конца строки.
однако это может быть правильным способом в этом случае.
но если вы хотите, чтобы соответствовать точное слово, более элегантный способ-использовать '\b'. В этом случае следующий шаблон будет соответствовать точной фразе'123456'.

/\b123456\b/

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

это гарантирует, что вашему совпадению не предшествует какой-либо символ, число или подчеркивание и не следует сразу за символом или числом или подчеркиванием

таким образом, он будет соответствовать "abc" в "abc", "abc.", "abc", но не" 4abc", ни"abcde"

более прямой путь-проверить равенство

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

однако, если вы действительно хотите придерживаться регулярного выражения

string1 =~ /^123456$/

вы также можете попробовать добавить пробел в начале и конце ключевого слова:/\s+123456\s+/i.