Нужно регулярное выражение для строки, которая должна содержать буквы, но не может содержать только числа и не может содержать специальные символы.

Нужно регулярное выражение для строки, такое что:

  1. Может иметь буквы, цифры
  2. игнорировать специальные символы, такие как: ‹ > { } [ ] # ~ ^/\"
  3. Не может быть чисто цифр
  4. Максимальный размер — 20 символов.

Допустимые ответы а) "привет мир 123-" б) "123 привет - мир" в) "-привет 123 мир"

Неверные ответы a) "123456" b) "123456" c) "abc>>>" c) "abc123>>>" d) ">>>>" Самое близкое, что я придумал, это:

^([A-Za-z0-9 '\-!\£\$:;%&\*\(\)_=\+,.\?@\n\r\t]{1,20}$

Но пункт 3 «Не может быть чисто цифр» становится недействительным.

Есть идеи?


person user532104    schedule 14.11.2013    source источник


Ответы (1)


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

^(?![0-9]+$)(?!.*?[<>{}\[\]#~^\/"]).{1,20}$

^ - Line start
(?![0-9]+$) - Not just numbers
(?!.*?[<>{}\[\]#~^\/"]) - Doesn't have these special characters
.{1,20} - 1 to 20 characters
$ - Line end
person anubhava    schedule 14.11.2013
comment
думаю, что проблема со второй строкой - (?!.*?[‹›{}[]#~^\/]) - person user532104; 14.11.2013
comment
Какие у ребенка проблемы с этим? - person anubhava; 14.11.2013
comment
\/ (этот бит ближе к концу) - person user532104; 14.11.2013
comment
То есть избежать /, так как большинство регулярных выражений используют разделители /. - person anubhava; 14.11.2013
comment
Эй, Анубай, я думаю, что разобрался - я тоже изменил твою линию. Ура - средний бит должен быть (?!.*?[‹›{}[]#~^/\\]) - person user532104; 14.11.2013
comment
Откуда ты? Дели? - person user532104; 14.11.2013
comment
Мой родной город — Лакхнау, но я много лет работал в Дели. - person anubhava; 14.11.2013
comment
давайте продолжим это обсуждение в чате - person user532104; 14.11.2013