Javascript регулярное выражение - только если первый символ не является звездочкой - PullRequest
11 голосов
/ 14 марта 2011

Я использую валидатор javascript, который позволит мне создать пользовательскую валидацию на основе регулярного выражения

С их сайта: regexp=^[A-Za-z]{1,20}$ разрешить до 20 буквенных символов.

Это вернет ошибкуесли введенные данные в поле ввода находятся за пределами этой области.

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

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

regexp=[\u002A]

Heeeeelp, пожалуйста: -D

Ответы [ 3 ]

29 голосов
/ 14 марта 2011

Как насчет:

^[^\*]

Что соответствует любому вводу, который не начинается со звездочки;Судя по примеру регулярного выражения, любой ввод, который не соответствует регулярному выражению, будет вызывать ошибку проверки, поэтому при двойном отрицании вы должны получить желаемое поведение: -)

Объяснение моего регулярного выражения:

  • Первый ^ означает «в начале строки»
  • Конструкция [ ... ] - это класс символов, который соответствует одному из символов* в скобках
  • ^ в начале класса символов означает «отрицание класса символов», то есть соответствует любому символу, который не один из перечисленных
  • \* означает буквальный *;* имеет особое значение в регулярных выражениях, поэтому я избежал его с помощью обратной косой черты.Как Роб указал в комментариях, нет необходимости избегать (большинства) специальных символов в классе символов
3 голосов
/ 14 марта 2011

Как насчет ^[^\*].+.

Разбит:

  • ^ = начало строки.
  • [^\*] = любой один символ, кроме'*'.
  • .+ = любой другой символ хотя бы один раз.
0 голосов
/ 14 марта 2011

Вы можете инвертировать класс символов, используя ^ после [

regexp=[^\u002A]

...