Ограничение длины регулярного выражения - PullRequest
0 голосов
/ 29 августа 2018

Это мое текущее регулярное выражение. (Требуется хотя бы один алфавит, цифра и специальный символ. Длина от 8 до 100)

^(?=.*([a-zA-Z]))(?=.*\d)(?=.*(_|[^\w])).+{8,100}$

Я хочу запретить строку, которая начинается или заканчивается пробелом. Для этого я попытался

^(?=.*([a-zA-Z]))(?=.*\d)(?=.*(_|[^\w]))[^\s].+[^\s]{8,100}$

Но {8, 100} применяется только к последнему [^\s]. Как я могу это исправить?

1 Ответ

0 голосов
/ 29 августа 2018

Вместо сопоставления .+{8,100} (что не является допустимым синтаксисом регулярных выражений), сопоставьте не пробел, затем от 6 до 98 символов, а затем еще один не пробел. Вы можете использовать \S вместо [^\s] и аналогичным образом \W вместо [^\w]:

^(?=.*([a-zA-Z]))(?=.*\d)(?=.*(?:_|\W))\S.{6,98}\S$
                               ^^^^^^  ^^^^^^^^^^^
...