Regex для сопоставления букв и цифр в строке, необязательно имеющих набор специальных символов - PullRequest
0 голосов
/ 25 октября 2018

https://regex101.com/r/RLi59p/1

/(?=.*[0-9])(?=.*[a-z])([a-z0-9]+)[!@#$%^&*]*$/i

Регулярное выражение, которое я сделал, соответствует следующим шаблонам:

  • Test2123
  • 568test
  • test2rest
  • @test2rest
  • @test2rest@

, но не соответствует следующим шаблонам

  • @test2rest@5
  • @test2rest@test

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Вы пропустили a-z в конце проверки строки, поэтому @test2rest@# соответствует, но @test2rest@a нет.

Попробуйте:

/(?=.*[0-9])(?=.*[a-z])([a-z0-9]+)[!@#$%^&*a-z]*$/i
0 голосов
/ 25 октября 2018

Вам необходимо внести небольшое исправление в свое регулярное выражение и определить все разрешенные символы вместе в одном таком, как это,

(?=.*[0-9])(?=.*[a-z])[a-z0-9!@#$%^&*]*$

В своем регулярном выражении у вас есть это,

([a-z0-9]+)[!@#$%^&*]*

, котороеозначает, что в вашей входной строке алфавитно-цифровые символы должны стоять на первом месте, а специальные символы - на последнем, и именно поэтому он не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...