Я разработал следующее регулярное выражение, пытающееся совместить строку с хотя бы одной цифрой и хотя бы одним строчным символом.Почему мое регулярное выражение не работает при использовании начала и конца привязок строк?
(?=.*[a-z])(?=.*\d)
Это, кажется, работает нормально. Например, он соответствует «abc3», а не «abc»
Однако, как только я изменяю регулярное выражение, добавляя начало и конец привязок строк, он перестает работать. Вы знаете, почему?
^(?=.*[a-z])(?=.*\d)$
'$' завершает совпадение. Базируем, вы тестируете нижний регистр, цифру и пустую строку вместе, что невозможно ... используйте '^ (? =. * [Az]) (? =. * \ d). * $ '..lookaheads имеют нулевую ширину. Они не потребляют никаких символов. – rock321987
Объяснение приведенных выше комментариев: контрольные * проверки *, но они нет * потреблять * символы. Таким образом, единственное, что фактически соответствует, это '^ $' - пустая строка. Взгляды не срабатывают, потому что они не могут быть «за пределами» конца строки. – usr2564301