typescript - Regex för e-postvalidering med separator


Jag försöker uppnå ett regex-uttryck: Jag behöver regex med e-post, jag använder det här:

\S+@\S+\.\S+

Och jag vill upprepa det X gånger med ;-avgränsare. Jag kan inte lista ut detta... Till exempel bör mönstret tillåta följande strängar:

[email 
[email ;[email ;[email ;[email 

Men bör till exempel inte tillåta följande sträng:

[email ;example2email.com;[email ;

Svar #1

Generellt matchas den X-separerade listan av enheter med ett mönster som ^y(?:Xy)*$.

Här finns en förbehåll relaterad till vad du matchar med y och X: \S matchar ;-tecken, så semikolonet måste "tas bort" från \S-mönstret, därför bör \S ersättas med [^\s;] i det resulterande mönstret.

Du kan använda

^[^\s;]+@[^\s;]+\.[^\s;]+(?:;[^\s;]+@[^\s;]+\.[^\s;]+)*$

Se regex-demonstrationen.

Detaljer:

  • ^ - början av strängen
  • [^\s;]+@[^\s;]+\.[^\s;]+ - ett eller flera tecken som inte är mellanslag och ;, @, ett eller flera tecken som inte är mellanslag och ;, . och sedan igen ett eller flera tecken som inte är mellanslag och ;
  • (?: - början på en icke-fångande grupp:

    • ; - ett semikolon
    • [^\s;]+@[^\s;]+\.[^\s;]+ - e-postliknande mönster (beskrivet ovan)
  • )* - slutet på den icke-fångande gruppen, upprepa noll eller fler förekomster
  • $ - slutet av strängen.