Мне нужно регулярное выражение, которое имеет следующие ограничения:
Содержит только символы [A-Z0-9.*]
Длина от 1 до 15 символов
Должен содержать *
но только один раз.
Поэтому следующие утверждения:
Моя цель состояла в том, чтобы иметь только одно выражение. Я мог бы иметь выражение, которое утверждает первые два ограничения: [A-Z0-9.*]{1,15}
а затем второе выражение для утверждения третьего ограничения \*{1}
.
Возможно ли иметь выражение, которое по существу проверяет общую структуру ввода строки, но затем перематывает и переоценивает строку с другим выражением?
Используя lookahead, вы можете использовать это регулярное выражение:
^(?=.{1,15}$)[A-Z0-9.]*\*[A-Z0-9.]*$
RegEx Breakup:
^
: Начать(?=.{1,15}$)
: Положительный взгляд, чтобы утверждать, что у нас есть от 1 до 15 символов ввода[A-Z0-9.]*
: Совместить ноль или более [A-Z0-9.]
Персонажей\*
: Совместите звездочку буквально[A-Z0-9.]*
: Совместить ноль или более [A-Z0-9.]
Персонажей$
: Конец^(?=[^*]*\*[^*]*$)[A-Z0-9.*]{1,15}$
{1}
ничего не делает.