2016-08-11 1 views
1

Ich versuche, regexp für die Überprüfung von E-Mail-Adressen zu schreiben, muss ich Adressen mit Buchstaben, Ziffern, Unterstreichungen, Punkte, Bindestriche vor '@' Zeichen und dem gleichen Satz danach akzeptieren, aber dort Mast Sei nur ein '@' Zeichen in dieser Adresse.Match ein Zeichen in Satz

Derzeit bin ich mit diesem fest: /^[\w\.\[email protected]]*$/i. Ich kann es nicht akzeptieren nur ein '@' Zeichen: {1} funktioniert nicht im Set und andere Möglichkeiten, die ich fand, war auch nicht in Ordnung. Also, wie passt man einen Charakter im Set zusammen?

+1

Sie können verwenden: '/^[\ w .-] + @ [\ w .-] + $ /' – anubhava

+0

@anubhava danke, genau das, was ich brauchte – snowfinch27

Antwort

1

Sie können nicht quantifiers innerhalb von Zeichenklassen verwenden (das heißt [@{1}] wird passen entweder ein @, {, 1 oder }). Was Sie brauchen, ist auf Ihre Zeichenklasse „abrollen“, spaltete es in zwei Teile, die die Zeichen, das Sie nur zwischen den beiden Teilen ein Vorkommen beschränken möchten herausnehmen:

/^[\w.-][email protected][\w.-]+$/ 

Hinweis Dieser Ausdruck wird mindestens 3 Zeichen erforderlich , aber das sollte in Ordnung sein, da E-Mail-Adressen nicht weniger als 3 Zeichen lang sein können.

Auch die /i case insensitive Modifier ist redundant, da \w Groß- und Kleinbuchstaben übereinstimmt.

Siehe die regex demo.

Verwandte Themen