2017-10-02 2 views
-1

Ich versuche, eine Möglichkeit zu finden, optionale Zeichen in einer PHP-Regex-Funktion (Anweisung) zu haben. Ich versuche, eine sehr einfache Adresse einzugeben, die aus numerischen Daten, einem Leerzeichen, einem Straßennamen mit einem Großbuchstaben, einer Straße, einem Boulevard, einer Allee usw. und dann optionalen Zeichen von NSWE besteht. Hier ist, was ich bisher haben ...Option Zeichen in PHP Regex

Bisher, was funktioniert und was nicht ...

133 mal Weg (funktioniert nicht)

133 mal Road_ (der Unterstrich ist eigentlich ein Raum, und das funktioniert)

133 mal Weg A (funktioniert, aber

nicht)

133 mal Weg N

Vorschläge sollten sehr geschätzt.

d+\s[A-z]+\s[A-z]+(\s+[NSWE])*? 
+0

Siehe https://regex101.com/r/tKuM77/1 –

+0

Das passt andere Zeichen außer 0-9 sowieso, wie Hindu-arabischen Ziffern. Sei genauer, was du eigentlich von der Regex erwarten möchtest. Bitte schreibe die Frage um. – PHPglue

+0

Die Verwendung von '[A-z]', um alle Buchstaben zu vergleichen, ist im Allgemeinen eine schlechte Idee, da die Zeichen eckige Klammern, Backslash, Karotte, Unterstrich und Backtick ebenfalls in diesem Bereich enthalten sind. – CAustin

Antwort

1

Ich würde so etwas tun:

\d+ [A-Z][a-z]+ [A-Z][a-z]+([NSWE])? 

Ich ersetzte den \s mit Leerzeichen so neue Linien oder Streifen dazwischen sind nicht erlaubt. Wenn Sie es nicht so wollen, können Sie mit

\d+\s[A-Z][a-z]+\s[A-Z][a-z]+(\s[NSWE])? 

bleibe ich [A-z]+-[A-Z][a-z]+ aus zwei Gründen geändert: Sie sind nur erlaubt, einen Großbuchstaben und Tasten wie Unterstrichen jetzt arbeiten mehr nicht zu verwenden.
Wenn ich dich falsch verstanden und Sie wollten so viele Briefe von [NSWE] hinzufügen, wie Sie möchten, können Sie diese verwenden:

\d+ [A-Z][a-z]+ [A-Z][a-z]+([NSWE]+)? 

Here you can see it in action

Hier können Sie es in Aktion sehen können.

Wenn es funktioniert Ich war derjenige, der Ihnen gesagt hat, wie es geht, wenn es nicht ich weiß nicht, wer diese gebrochene Regex erfunden hat.

+0

Vielen Dank. Funktioniert perfekt für das, was ich tun muss. –

+0

@TheRoofer Wenn dies funktioniert, sollten Sie die Antwort akzeptieren. https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – chris85

+0

Ja, es funktioniert. Danke, dass du mich daran erinnert hast. –