2016-12-28 6 views
3

definiere ich einen String mit:Ungültige Escape-Sequenz in wörtlichen mit regex

static let Regex_studio_tel = "^(0[0-9]{2,3}\-)?([2-9][0-9]{6,7})+(\-[0-9]{1,4})?$" 

Aber es kommt ein Problem:

Ungültige Escape-Sequenz in wörtlichen

Das Bild, das ich Token :

enter image description here


bearbeiten -1

Meine Forderung ist Spiel spezielle Flugzeug Zahlen Regex verwenden, wie zum Beispiel:

Mein Unternehmen hat eine besondere Ebene Nummer:

028-65636688 or 85317778-8007 

// aaa-bbbbbbbb-ccc Wir wissen, aaa ist das Präfix, und es bedeutet City Dialing Code, und bbbbbbbb ist die Haupt-Telefonnummer, cccc ist die Nebenstellennummer des Festnetz-Telefon,

wie mein Unternehmen die Festnetz-Telefon 028-65636688 ist, vielleicht unser Unternehmen haben 10 Nebenstellennummer: 028-65636688-8007 ,028-65636688-8006,028-65636688-8005 und so weiter. Natürlich kann es am Ende eine ext-Nummer haben.

028-65636688-2559 
+1

TRY: statisch lassen Regex_studio_tel = "^ (0 [0-9] {2,3} '\' -)? ([2-9] [0-9] {6,7}) + ('\ '- [0-9] {1,4})?$ –

+0

Sie brauchen vielleicht noch einige Beispiele, um Ihre Anforderung zu klären. '65636688' ist ungültig, weder' 028-65636688-85317778-8007' ist nicht OK? – OOPer

Antwort

7

Zwei Zeichensequenz \- ist keine gültige Escape-Sequenz in Swift String. Wenn Sie \- zu NSRegularExpression als Muster übergeben müssen, müssen Sie \\- in Swift String literal schreiben.

Also, sollten Sie Ihre Linie so etwas wie dieses:

static let Regex_studio_tel = "^(0[0-9]{2,3}\\-)?([2-9][0-9]{6,7})+(\\-[0-9]{1,4})?$" 

ADDITION

Als Rob kommentierte Minuszeichen ist kein Sonderzeichen in regulären Ausdruck, wenn sie außerhalb von [] erscheinen , so können Sie es schreiben als:

static let Regex_studio_tel = "^(0[0-9]{2,3}-)?([2-9][0-9]{6,7})+(-[0-9]{1,4})?$" 
+0

@Rob, ich fragte mich, ob ich es notieren sollte, aber es scheint, sollte ich. – OOPer

0

Ich vermute, dass Ihre Absicht war, die - Zeichen zu entkommen. Aber das ist nicht notwendig (und ist falsch). Wenn Ihre Absicht nur Striche anzupassen ist, sollen Sie diese Schrägstriche vollständig entfernen:

let pattern = "^(0[0-9]{2,3}-)?([2-9][0-9]{6,7})+(-[0-9]{1,4})?$" 

Unrelated, aber ich bin misstrauisch, dass + Charakter. Hast du wirklich gemeint, dass du ein oder mehrere Vorkommen von [2-9][0-9]{6,7} abgleichen möchtest? Oder wollten Sie genau ein Ereignis abgleichen?

+0

danke bro, ich möchte die Festnetznummer, und ich gepostet ist nicht verfügbar in swift, übereinstimmen alle Festnetznummer wird auch '+' betrachten? – aircraft

+0

Ich weiß nicht, welches Format diese Festnetznummern Sie Ich bin mir ziemlich sicher, dass es nicht mehrere Folgen von "[2-9] [0-0] {6,7}" ist. Zum Beispiel wird Ihr Regex eine Sequenz der Zahl 9 wiederholen, die 700 Mal wiederholt wird Ich kann nicht glauben, dass das ist, was Sie beabsichtigten. Vielleicht können Sie Ihre Frage redigieren und uns wirkliche Beispiele aller Arten der Zeichenketten zeigen, die Sie abgleichen möchten. – Rob

+0

@aircraft - OK, ich sehe Ihre aktualisierte Ihre Frage. So, sind Sie versuchen, die vollständige Komma getrennte Liste von Zahlen zu finden, oder Sie tun Möchten Sie eine Regex, die Sie verwenden können, um die Zahlen innerhalb dieser breiteren Zeichenfolge zu durchlaufen? – Rob

Verwandte Themen