Regex без пробелов или di git в начале - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь создать регулярное выражение, которое не позволяет использовать цифры или пробелы в начале. Я пытался сделать что-то вроде этого:

^[\S][\D][\w+_.-]+@{1}[\w_.-]+\.{1}[a-zA-z]*$

Однако, когда я использую 4test@example.com, он говорит, что это электронное письмо, но когда я использую 4test@example.com, он говорит, что это не электронное письмо. В обоих случаях я бы хотел сказать, что это не электронная почта. Там не должно быть пробела или ди git, как я могу объединить эти два: [\S][\D], чтобы он работал правильно?

1 Ответ

0 голосов
/ 05 февраля 2020

В вашем шаблоне \S будет соответствовать любому непробельному символу, а также будет соответствовать di git.

. Как упомянуто в комментарии, вы можете исключить соответствие di git, используя класс отрицанных символов . Если Если вы повторяете класс символов после этого 1+ раз, то часть перед @ должна содержать как минимум 2 символа.

Если минимум должен быть 1 символ, вы можете использовать * вместо +.

Обратите внимание, что вам не нужно {1} и что [a-zA-z] может соответствовать больше , чем [a-zA-Z]

Если вы повторяете класс символов [a-zA-Z]* в конце 0+ раз, используя * совпадение может также соответствовать только точке.

Вы можете обновить шаблон так:

^[^\d\s][\w_.-]*@[\w_.-]+\.[a-zA-Z]+$

Regex demo


Если использовать \S слишком широко, другим вариантом может быть использование отрицательного предвзятого отношения, утверждающего не ди git с последующим повторением класса символов 1+ раз:

^(?!\d)[\w_.-]+@[\w_.-]+\.[a-zA-Z]+$

Regex demo

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