Regex — требуется несколько символов и разрешить только некоторые дополнительные?

Я хочу проверить имена пользователей в PHP и проверить их с помощью регулярного выражения. Они должны содержать как минимум 2 «настоящих» символа, например A, Ä, s, 1 или же 5, но некоторые другие, как . или же _ или пробел тоже должен быть разрешен. Положение обязательных символов не имеет значения.

Это то, что я имел до сих пор, и, к сожалению, также позволяет ... как имя пользователя:

preg_match('/^[\pL\pN\s-+_.]+$/u', $value)

Я хочу разрешить только определенные символы. нет <, или же # например.
Как я могу это сделать?

1

Решение

Посмотрим…

  • Как минимум две буквы / цифры: ^(?:.*?[\p{L}\p{N}]){2}
  • Допускаются другие символы: ^[-+.\w ]+$

Давайте объединим это вместе, и мы получим:

^(?=(?:.*?[\p{L}\p{N}]){2})[-+.\w ]+$

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]