Frage

Wie für eine null (leer) string ??

preg_match

Ich brauche so etwas wie:

/([0-9]|[NULL STRING])/
War es hilfreich?

Lösung

Sie können ^ verwenden übereinstimmen beginning-of-line und $ End-of-line entsprechen, damit der reguläre Ausdruck ^$ würde eine leere Zeile / string entsprechen.

Ihr spezifisches Beispiel (eine Linie / string eine einzelne Ziffer oder leer ist enthalten) wäre am einfachsten mit ^[0-9]?$ erreicht werden.

Andere Tipps

Mit dem PHP-Regex kann man einfach sagen:

/(\d|)/

Es kann sein nützlich ...

Sie können auch ein Null-Zeichen mit \0 entsprechen. Ist das, was Sie von [NULL STRING] gemeint? Dieser Ausdruck könnte /([0-9]|\0)/ werden.

Ich hatte dies zu tun, in Java, für die letzten 4 für eine CC-Nummer. Das Feld ist optional, so dass es entweder leer oder 4-stellig sein könnte. Meine Lösung ist:

^\d{4}$|^$

Das dies eine Null in der typischen Java-Mode führt zu einer Null-Zeiger-Ausnahme ist vorbei:

String myString = null;
last4Pattern.matcher(myString).matches(); //Null in this case.

Allerdings glaube ich, dass es eher ein Java-Implementierung Problem ist.

Da es nicht einfach ist, eine leere Zeichenkette passen, aber es ist in der Regel möglich, alles zu passen, die nicht leer ist, sollten Sie sie umdrehen und nicht entspricht die gegenüber (Doppel negativ).
In diesem Beispiel ist alles, was ist nicht (^) eine nicht -stellige (\D) für Null oder eine Zeit (?):

[^\D]?

(oder für bestimmte ascii: [^\x00-\x29\x3a-\xff]? oder Unicode: [^\u0000-\u0029\u003a-\uffff]? )

Spiele ein "" ( ), " 0 ", " 1 " .. „ 9 "aber keine ""( ), " A "(nicht-stellig) oder" 123 "(mehr string).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top