JavaScript RegEX явный символ совпадает только один раз

1

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

  1. Содержит только символы [A-Z0-9.*]

  2. Длина от 1 до 15 символов

  3. Должен содержать * но только один раз.

Поэтому следующие утверждения:

  • ABC.123 недействителен (нет звезд)
  • ABC.123 * действительный (звезда в конце)
  • * ABC.123 действует (звезда начинается)
  • ABC. * 123 действительный (звезда посередине)
  • * ABC.123 * недействительный (более одной звезды)

Моя цель состояла в том, чтобы иметь только одно выражение. Я мог бы иметь выражение, которое утверждает первые два ограничения: [A-Z0-9.*]{1,15} а затем второе выражение для утверждения третьего ограничения \*{1}.

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

  • 0
    {1} ничего не делает.
Теги:

1 ответ

6
Лучший ответ

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

^(?=.{1,15}$)[A-Z0-9.]*\*[A-Z0-9.]*$

Демо-версия RegEx

RegEx Breakup:

  • ^: Начать
  • (?=.{1,15}$): Положительный взгляд, чтобы утверждать, что у нас есть от 1 до 15 символов ввода
  • [A-Z0-9.]*: Совместить ноль или более [A-Z0-9.] Персонажей
  • \*: Совместите звездочку буквально
  • [A-Z0-9.]*: Совместить ноль или более [A-Z0-9.] Персонажей
  • $: Конец
  • 0
    В качестве альтернативы вы также можете использовать это регулярное выражение: ^(?=[^*]*\*[^*]*$)[A-Z0-9.*]{1,15}$
  • 1
    Это довольно умно. Раньше я нуждался в подобных вещах, но не мог придумать, как это сделать, спасибо!
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню