2010-12-31 9 views
0

Ich versuche, eine Regex für Alias-Validierung zu erstellen:PHP Einfache PCRE-Regex nur 1 Punkt oder keine?

Und ich erlaube Buchstaben, Zahlen und 1 Punkt.

Ich habe folgendes getan:

/^[a-z0-9\\.]+$/i 

erlaubt es jedoch mehr als 1 Punkt?

+1

Kann der Punkt erscheinen an irgendeiner Position? – Gumbo

+0

@Gumbo - Ja, es kann an jeder Position erscheinen. – newbtophp

+0

Und was ist nur mit dem Punkt allein? – Gumbo

Antwort

6

Dies sollte es tun:

/^(?:\.[a-z0-9]+|[a-z0-9]+(?:\.[a-z0-9]*)?)$/i 

Dies ist die Zeichenfolge erlaubt entweder:

  • Start mit einem Punkt, der von mindestens einem alphanumerischen Zeichen oder
  • Start mit einem folgt oder mehr alphanumerisches Zeichen, dem ein Punkt und null oder mehr alphanumerische Zeichen folgen können.
+0

Super danke! – newbtophp

0

versuchen Sie dies:

^(?:[a-z0-9]+\.?[a-z0-9]*|[a-z0-9]*\.?[a-z0-9]+)$ 

Orte der Punkt in der Mitte, dann kann es auf beiden Seiten umgeben.

+0

Dies entspricht '.' – seriousdev

+0

... sowie die leere Zeichenfolge. – Gumbo

+0

@Gumbo: In der Tat, eine leere Zeichenfolge enthalten. Platzieren der {} innerhalb der Klasse funktioniert nicht, und ich kenne keine Möglichkeit, ein Vorkommen eines Elements in einer Klasse zu begrenzen, außer es zu lösen. @sexyprout: So ist die ursprüngliche Frage. –

0

Ich denke, es ist keine gute Idee, einen Punkt als erstes oder letztes Zeichen, in diesem Fall zu ermöglichen:

/^[a-z0-9]+\.?[a-z0-9]+$/i 
+0

Die Kommentare zeigen an, dass der Punkt in jeder Position erscheinen kann. – meagar

+0

In diesem Fall ersetzen Sie einfach das + durch * in diesen 2 Positionen. – Christian