Регулярное выражение - исключить список слов для имени - PullRequest
6 голосов
/ 04 апреля 2011

Я пытаюсь сделать регулярное выражение, которое принимает это:

  • Только a-z, 0-9, _ символы, с минимальной длиной 3
  • admin, static, my и www отклонены.

Для первой части мне уже удалось это сделать с помощью:

^[a-zA-Z0-9\\_]{3,}$

Но я не знаю, как исключить слова, перечисленные ранее.

Например, это будет означать:

  • статический не разрешен (конечно), но
  • statice разрешено
  • в восторге разрешено

Используя это регулярное выражение:

^(?!static|my|admin|www).*$

не работает должным образом: исключает статику (и все после неавторизованного слова).

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

Ответы [ 2 ]

8 голосов
/ 04 апреля 2011

Попробуйте что-то вроде этого:

^(?!static$|my$|admin$|www$).*$

Это запретит «статические», но разрешит «statice», «statica» и т. Д. Привязав каждое слово из черного списка к концу строки, вы будете сопоставлять их только в том случае, если они стоят одни без каких-либо завершающих символов.

Редактировать: codeaddict предложил более простой способ сделать то же самое:

^(?!(?:static|my|admin|www)$).*$

3 голосов
/ 04 апреля 2011

Я отвечу на мой вопрос, чтобы дать правильный ответ на мой вопрос (регулярное выражение, включающее оба обязательства), но я дам принятый ответ Эндрю Хэру, который приведет меня к правильному пути:)

Вот как:

  • Разрешить только символы a-z, 0-9, _ с минимальной длиной 3
  • Исключить admin, статические, my и www

Вот регулярное выражение:

^(?!static$|my$|admin$|www$)[a-z0-9\_]{3,}$

Или, как упомянул Кодаддикт, с одним концевым якорем:

^(?!(?:static|my|admin|www)$)[a-z0-9\_]{3,}$

Надеюсь, это поможет в будущем!

...