2016-04-25 9 views
1

Ich habe ein kleines Google Maps-Widget erstellt, um die Eingabe von Adressen in ein Formular zu beschleunigen, da es Google Maps isn scheint Wenn es um tatsächliche Hausnummern geht, habe ich die Möglichkeit hinzugefügt, eine Hausnummer auf den ausgewählten Standort zu überschreiben.Reguläre Ausdrücke - Wählen Sie alle vor dem ersten Whitespace-Zeichen, vorausgesetzt, dass es sowohl Zeichen als auch Ziffern enthält

Hier ist ein kleines Beispiel ...

ich wählen Sie einen Ort auf der Karte und es gibt: 13B Main Street, London, L0N D0N, United Kingdom

Das ist sehr gut, aber die Person, unter der Annahme, das Formular nicht ausfüllen nicht leben 13B aber 13A, ich versuche, einen regulären Ausdruck zu verwenden, um diesen Abschnitt der Zeichenfolge zu überschreiben/zu ersetzen.

Im Moment habe ich die folgenden: /([^\s]+)/, die das erste Wort oder alle bis zum ersten Zwischenraumzeichen auswählt, die wieder gut gearbeitet, bis ich merkte, dass Google Maps manchmal nicht eine Gebäudenummer zurückkehrt Main StreetREPLACED Street würde das heißt, wenn kein Gebäudenummer wird zurückgegeben.

Also im Grunde versuche ich einen regulären Ausdruck zu erstellen, der die folgenden Bedingungen erfüllt.

Es ist das erste Wort (vor Leerzeichen) und es muss entweder nur eine Zahl oder eine Kombination von beidem nicht nur Zeichen lang sein.

Danke für jede Hilfe!

Auch wenn es nicht zu viel ist, um zu fragen, ob Sie die Antwort posten, könnten Sie vielleicht leicht erklären, wie der reguläre Ausdruck aufgebaut ist und welche Teile nach was suchen. Vielen Dank!

Antwort

1

Sie diese Regex verwenden können nur einen Teil des Textes zu entsprechen, die eine Ziffer vor dem ersten Leerzeichen enthalten:

/^[a-zA-Z]*\d[a-zA-Z\d]*(?=\s)/ 

RegEx Demo

+0

@Connor: Hat das geklappt? – anubhava

0

Diese Regex

/^(^\d+\w*\s)/

passt auf eine beliebige Anzahl von Ziffern (mindestens eine) gefolgt von einer beliebigen Anzahl von Wortzeichen (einschließlich ng) am Anfang einer Zeile, gefolgt von einem Leerzeichen. Bis zu Ihnen, ob der Raum, in dem Spiel enthalten

Demo

+0

Anders als die Antwort, die @anubhava gibt, wird meins auf Hausnummern bestehen, die mit einer Nummer beginnen, also wird "a1" nicht übereinstimmen –

0

Eine Idee ist /^\s*[\w-]*\d+[\w-]*/ sie kümmert sich der vorherigen weißen Räumen stattfinden wird, und Anschrift Formen wie D12, 12D, D12 oder 12-C

Verwandte Themen