2016-12-21 5 views
1

Обратитесь к моему регулярному выражению:Регулярное выражение - не позволяют пробелы в начале

^(?!.* )[^#+&\'\"\\\\]*$ 

Я хочу restrcit пользователю ввести пробел в начале, например:
(пробел) 123 ---> недействительный

Как добавить его в вышеуказанное регулярное выражение?
Может кто-нибудь мне помочь?

+0

Должен ли последний шаблон регулярного выражения совместить пустую строку '' "'? – RomanPerekhrest

ответ

1

Вы можете добавить альтернативу опережающего просмотра:

^(?! |.* )[^#+&\'\"\\\\]*$ 
^^^^^^^^^^ 

См regex demo

(?! |.* ) отрицательный предпросмотр проваливает матч, если пространство появляется в самом начале строки, или если есть двойные последовательные пробелы где-нибудь после любых символов 0+ (в зависимости от опции DOTALL или аромата регулярного выражения, любые символы, кроме символов разрыва строки).

Та же картина может быть написана в более линейным способом, как и

^(?!(?:.*)?)[^#+&\'\"\\\\]*$ 
+1

Wiktor, вы решили мою проблему. –

1

к restrcit пользователю ввести пробел в начале

Даже проще, используя символьный класс [^\s]+?, который позволяет только непространственные символы в начале строки:

^[^\s]+?[^#+&\'\"\\\\]*$

+0

Это выражение больше не соответствует пустой строке. Экспрессия OP. –

+0

@ WiktorStribiżew, я попрошу – RomanPerekhrest

Смежные вопросы