Как ограничить пустое пространство только в начале? - PullRequest
0 голосов
/ 21 июня 2019

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

^[^\s]+[a-z-A-Z]$

Мне нужно сделать это в java-скрипте, чтобы проверить поле ввода. Мне нужно разрешить все символы в поле ввода без пробелов в начале, и мне нужны все пробелы в конце и промежуточном.

1 Ответ

1 голос
/ 21 июня 2019

A [^\s] соответствует любому символу, кроме пробела, в то время как вы хотите разрешить только буквы и пробелы.

Используйте

^[a-zA-Z][a-zA-Z\s]*$

ПРИМЕЧАНИЕ: также «разрешить» (= сопоставить) любые печатные символы ASCII, кроме пробела, букв и цифр, которые вы можете добавить [!-\/:-@[- {- ~] `к регулярному выражению (см. этот мой ответ ):

^[a-zA-Z][a-zA-Z\s!-\/:-@[-`{-~]*$

См. Демонстрационную версию регулярных выражений и график регулярных выражений :

enter image description here

Или, если пустая строка тоже должна соответствовать:

^(?:[a-zA-Z][a-zA-Z\s]*)?$

Обратите внимание, что для добавления дефиса к классу символов гораздо безопаснее (и более переносимым) поместить его в начало / конец класса символов, т. Е. Использовать [a-zA-Z-] вместо [a-z-A-Z].

Детали

  • ^ - начало строки
  • [a-zA-Z] - буква ASCII
  • [a-zA-Z\s]* - 0 или более букв ASCII или пробелов
  • $ - конец строки.

(?:...)? - необязательная группа без захвата, которая соответствует ее шаблону 1 или 0 раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...