Я пытаюсь сопоставить адрес электронной почты, вот что я до сих пор придумал:
String text = "gandalf_storm@mymail.com";
String regex = "(\\w+)@{1}(\\w+){2,}\\.{1}\\w{2,4}";
Это, однако, работает в следующих случаях:
gandalf_storm@mymail.com
gandalfstorm@mymail.com
gandalf2storm@mymail.com
Таким образом, он соответствует любому буквенно-цифровому символу, повторяемому один или несколько раз, который стоит перед одним @, за которым следует любой буквенно-цифровой символ, повторяемый не менее двух раз (что является минимальным символом для любого доменного имени), за которым следует один (точка), за которым следует любой буквенно-цифровой символ. символ повторяется не менее 2 раз и не более 4 раз (поскольку существуют домены, такие как .us или .mobi).
Однако это выражение не работает с электронными письмами, такими как:
gandalf.storm@mymail.com
gandalf.storm@mydomain.me.uk
gandalf.storm@mysubdomain.mydomain.me.uk
gandalf.storm@mysubdomain.mysubdomain.mydomain.me.uk
и т. д. столько поддоменов
или
gandalf.storm@mymail.com
gandalf2storm@mydomain.me.uk
gandalf_storm@mysubdomain.mydomain.me.uk
gandalfstorm@mysubdomain.mysubdomain.mydomain.me.uk
Я только начал изучать регулярные выражения, и мне показалось интересным попытаться решить такие проблемы с помощью регулярных выражений ... не частично, но для каждого случая любая помощь будет очень ценной. Спасибо