#regex
#регулярное выражение
Вопрос:
Для одного из моих проектов я просто хочу проверить ввод, который имеет следующие критерии:
- Ввод может содержать пробелы, но не все пробелы
- Ввод должен содержать по крайней мере один или несколько символов
- пробел не является обязательным
- Ввод должен разрешать любой символ клавиатуры
Например :
- пробел14 символов
- #$space12chars
- amp;^11 charsspace
Я не очень старался писать регулярное выражение, так как я новичок в этом.
^[x00-x7Es]{0,15}$
Но приведенное выше выражение допускает все пробелы, которые ограничены 15 символами — оно не удовлетворяет первым критериям.
Комментарии:
1. Попробуйте
^(?!s $)[x00-x7Es]{1,15}$
2. Кстати, мой комментарий не сработал?
Ответ №1:
Это то, что вы ищете?
^(?!s $)[x00-x7E]{0,14}$
Ответ №2:
Вы можете использовать
^(?!s $)[x00-x7E]{1,15}$
Он соответствует:
Условие «Ввод может содержать пробелы, но не все пробелы» выполняется с отрицательным прогнозом (?!s $)
, размещенным сразу после привязки к началу строки (для выполнения проверки только один раз).
«Ввод должен содержать по крайней мере один или несколько символов» легко выполняется с помощью {1,15}
ограничивающего квантора: нижняя граница установлена на 1
, поэтому должно быть не менее 1 символа. Верхняя граница установлена на 15
, вы можете настроить ее в соответствии с вашими меняющимися требованиями.
Условие «пробел не является обязательным» выполняется из-за использования одного универсального класса символов, который также соответствует другим типам символов.
Условие «Ввод должен разрешать любой символ клавиатуры» уже выполнено вашим начальным выражением, поскольку [x00-x7E]
соответствует диапазону символов ASCII.