preg_match: Nichts zu wiederholen / keine Übereinstimmung

9

Ich verwende das: if(!preg_match('/^+[0-9]$/', '+1234567'))

und bekomme:

  

Warnung: preg_match ()   [function.preg-match]: Kompilierung   fehlgeschlagen: Bei Offset 1 ist nichts zu wiederholen

irgendwelche Ideen warum?

update : Verwenden Sie jetzt: if(!preg_match('/^\+[0-9]$/', '+1234567'))

und ich bekomme keine Übereinstimmung.

irgendwelche Ideen warum?

    
Hailwood 11.07.2010, 12:38
quelle

2 Antworten

21

+ ist ein Sonderzeichen, das 1 oder mehr Zeichen des vorherigen Zeichens angibt. Wenn Sie es nicht umgehen, wenden Sie es auf das Einfügezeichen an. entkomme es mit \ und es wird ein literales Pluszeichen gefunden.

%Vor%

BEARBEITEN:

Der Grund, warum es nicht übereinstimmte, ist, dass Sie eine Ziffer von 0-9 und das Ende der Zeichenfolge mit $ angegeben haben. Sie müssen eine variable Anzahl von Ziffern eingeben.

%Vor%

Kürzere Version:

%Vor%     
meder omuraliev 11.07.2010, 12:41
quelle
3

'/^\+[0-9]$/' bedeutet, dass der Anfang der Zeile ein Pluszeichen gefolgt von einer Nummer gefolgt vom Zeilenende sein muss.

'/^\+[0-9]+$/' bedeutet, dass der Beginn der Zeile ein Pluszeichen sein muss, gefolgt von einer einer oder mehreren Zahlen und dem Zeilenende.

    
Davor Lucic 11.07.2010 12:51
quelle

Tags und Links