Javascript regexp - только если первый символ не является звездочкой

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

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

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

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

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

regexp=[\u002A]

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

Ответ 1

Как насчет:

^[^\*]

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

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

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

Ответ 2

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

Разбито:

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

Ответ 3

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

regexp=[^\u002A]