Я хочу сопоставить два пароля с регулярным выражением. Например, у меня есть два входа «123456» и «1234567», тогда результат не должен совпадать (false). И когда я ввел «123456» и «123456», тогда результат должен совпадать (true).
Я не мог сделать выражение. Как мне это сделать?
Ответы:
если у вас есть входной пароль в переменной и вы хотите точно соответствовать 123456, то якоря помогут вам:
в Perl тест на совпадение пароля будет что-то вроде
РЕДАКТИРОВАТЬ:
Барт Киерс прав, почему вы не используете для этого strcmp ()? каждый язык имеет его по-своему
как вторая мысль, вы можете рассмотреть более безопасный механизм аутентификации :)
источник
\z
вместо$
./^123456$/
соответствует обоим123456
и123456
сопровождается переводом строки, пока/^123456\z/
совпадает только123456
.В ответе Малфо « ^» и «$» использовались для определения начала и конца текста.
Они обычно используются для определения начала и конца строки.
Однако это может быть правильным способом в этом случае.
Но если вы хотите подобрать точное слово, более элегантный способ - использовать \ b . В этом случае следующий шаблон будет соответствовать точной фразе «123456».
источник
\bhttp:\/\/www.foo.com\b
будет соответствоватьhttp://www.foo.com=?http://www.foo.com
URL-адресу как есть. Первый ответ, использующий^
(начало) и$
(конец), является лучшим методом с помощью следующих тестеров: regex101.com и regexr.com (тестер, включенный в приведенную ниже ссылку, не оченьэто гарантирует, что вашему совпадению не предшествует какой-либо символ, число или знак подчеркивания, и сразу же после него не следует символ, число или знак подчеркивания.
поэтому он будет соответствовать «abc» в «abc», «abc.», «abc», но не «4abc» и не «abcde»
источник
\w
соответствует цифрам, а также буквам, поэтому[\w\d]
является избыточным.Более простой способ - проверить равенство
однако, если вы действительно хотите придерживаться регулярного выражения,
источник
Вы также можете попробовать добавив пробел в начале и в конце ключевого слова:
/\s+123456\s+/i
.источник