Преобразование FSA в регулярное выражение - PullRequest
0 голосов
/ 15 октября 2018

Этим утром я создал FSA, который предназначен для проверки локальной части электронного письма.Чтобы упростить эти вещи для себя, я сделал эти спецификации

'Локальная часть адреса электронной почты должна использовать любой из;прописные буквы AZ и строчные буквы алфавита az, цифры 0-9, «+» и точка «.», при условии, что они не появляются последовательно.Локальная часть не должна начинаться или заканчиваться ни '+', ни точкой '.''

Локальная часть

Я рад, что это соответствует требованиям, которые я сделал, однако у меня возникают проблемы с преобразованием его в регулярное выражение.Очевидно, что он начинается с ^ [A-Za-z0-9] и заканчивается @ $, но после этого я не уверен, как его структурировать.

Любое руководство будет с благодарностью.

Ответы [ 3 ]

0 голосов
/ 15 октября 2018

Хм, это работает, если я вас правильно понимаю

^[A-Za-z0-9][A-Za-z0-9+.]+@$

https://regex101.com/r/MxMMeq/1

^[\w\d]+([+.][\w\d]+)*@$

https://regex101.com/r/MxMMeq/7

0 голосов
/ 15 октября 2018

Думайте об этом как о трех разных состояниях.Вам нужно начать с одной или нескольких [A-Za-z0-9], затем, возможно, с одной точки или плюс, затем вернуться к начальному состоянию и, наконец, принять @.

^[A-Za-z0-9]+([.+][A-Za-z0-9]+)*@

На самом деле это неочень хорошая спецификация;запрещает много действительных адресов электронной почты.Вместо этого следует обратиться к фактическому определению в RFC5222 .

0 голосов
/ 15 октября 2018

С отрицательным прогнозом (чтобы проверить последующее .):

^[A-Za-z0-9](?!.*\.\..*)[A-Za-z0-9+.]*[A-Za-z0-9]@$
...