Ich versuche, einen umfassenden regulären Ausdruck zusammenzustellen, um Telefonnummern zu validieren. Im Idealfall werden internationale Formate verarbeitet, es müssen jedoch US-Formate verarbeitet werden, einschließlich der folgenden:
1-234-567-8901
1-234-567-8901 x1234
1-234-567-8901 ext1234
1 (234) 567-8901
1.234.567.8901
1/234/567/8901
12345678901
Ich werde mit meinem aktuellen Versuch antworten, aber ich hoffe, dass jemand etwas Besseres und / oder Eleganteres hat.
regex
validation
phone-number
Nicholas Trandem
quelle
quelle
555
außer ihnen911
?Antworten:
Bessere Option ... entfernen Sie einfach alle nichtstelligen Zeichen bei der Eingabe (mit Ausnahme von 'x' und führenden '+'), und achten Sie dabei auf die britische Tendenz, Zahlen in nicht standardmäßiger Form zu schreiben,
+44 (0) ...
wenn Sie aufgefordert werden, das internationale Präfix zu verwenden (In diesem speziellen Fall sollten Sie das(0)
vollständig verwerfen .)Dann erhalten Sie Werte wie:
Wenn Sie dann anzeigen, formatieren Sie nach Herzenslust neu. z.B
quelle
Es stellt sich heraus, dass es dafür eine Spezifikation gibt, zumindest für Nordamerika, die NANP .
Sie müssen genau angeben, was Sie möchten. Was sind gesetzliche Begrenzer? Leerzeichen, Bindestriche und Punkte? Kein Trennzeichen erlaubt? Kann man Trennzeichen mischen (zB + 0,111-222,3333)? Wie werden Erweiterungen (z. B. 111-222-3333 x 44444) behandelt? Was ist mit speziellen Nummern wie 911? Wird die Vorwahl optional oder erforderlich sein?
Hier ist ein regulärer Ausdruck für eine 7- oder 10-stellige Zahl mit zulässigen Erweiterungen. Trennzeichen sind Leerzeichen, Bindestriche oder Punkte:
quelle
/(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})/
(?:(?:(\s*\(?([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\)?\s*(?:[.-]\s*)?)([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})
Wenn die Benutzer Ihnen ihre Telefonnummern geben möchten, vertrauen Sie darauf, dass sie es richtig machen. Wenn sie es Ihnen nicht geben möchten, werden sie durch die Eingabe einer gültigen Nummer entweder an die Website eines Mitbewerbers gesendet oder eine zufällige Zeichenfolge eingegeben, die zu Ihrer Regex passt. Ich könnte sogar versucht sein, die Nummer einer Premium-Horoskop-Hotline nachzuschlagen und diese stattdessen einzugeben.
Ich würde auch einen der folgenden Einträge als gültige Einträge auf einer Website betrachten:
quelle
Ich würde auch vorschlagen, die Google-Bibliothek " libphonenumber " zu besuchen . Ich weiß, es ist kein Regex, aber es macht genau das, was Sie wollen.
Zum Beispiel wird es erkennen, dass:
ist eine mögliche Nummer, aber keine gültige Nummer. Es unterstützt auch Länder außerhalb der USA.
Highlights der Funktionalität:
getNumberType
- erhält den Typ der Nummer basierend auf der Nummer selbst; Festnetz-, Mobil-, gebührenfreie, Premium-Tarif-, Shared Cost-, VoIP- und persönliche Nummern (wann immer möglich) können unterschieden werden.isNumberMatch
- erhält ein Konfidenzniveau, ob zwei Zahlen gleich sein könnten.getExampleNumber
/getExampleNumberByType
- bietet gültige Beispielnummern für alle Länder / Regionen mit der Option, anzugeben, welche Art von Beispieltelefonnummer benötigt wird.isPossibleNumber
- schnell erraten, ob eine Nummer eine mögliche Telefonnummer ist, indem nur die Längeninformationen verwendet werden, viel schneller als eine vollständige Validierung.isValidNumber
- vollständige Validierung einer Telefonnummer für eine Region anhand von Längen- und Präfixinformationen.AsYouTypeFormatter
- Formatiert Telefonnummern im laufenden Betrieb, wenn Benutzer jede Ziffer eingeben.findNumbers
- findet Zahlen in der Texteingabe.PhoneNumberOfflineGeocoder
- liefert geografische Informationen zu einer Telefonnummer.Beispiele
Das größte Problem bei der Validierung von Telefonnummern ist, dass sie sehr kulturell abhängig sind.
(408) 974–2042
ist eine gültige US-Nummer(999) 974–2042
ist keine gültige US-Nummer0404 999 999
ist eine gültige australische Nummer(02) 9999 9999
ist auch eine gültige australische Nummer(09) 9999 9999
ist keine gültige australische NummerEin regulärer Ausdruck ist in Ordnung, um das Format einer Telefonnummer zu überprüfen, aber er kann die Gültigkeit einer Telefonnummer nicht wirklich überprüfen .
Ich würde vorschlagen, einen einfachen regulären Ausdruck zu überspringen, um Ihre Telefonnummer zu testen, und eine Bibliothek wie die von Google zu verwenden
libphonenumber
(Link zum GitHub-Projekt) .Libphonenumber vorstellen!
Anhand eines Ihrer komplexeren Beispiele erhalten
1-234-567-8901 x1234
Sie die folgenden Daten auslibphonenumber
(Link zur Online-Demo) :Sie erfahren also nicht nur, ob die Telefonnummer gültig ist (was sie ist), sondern Sie erhalten auch eine konsistente Telefonnummernformatierung in Ihrem Gebietsschema.
Als Bonus
libphonenumber
gibt es eine Reihe von Datensätzen, mit denen auch die Gültigkeit von Telefonnummern überprüft werden kann. Wenn Sie also eine Nummer wie+61299999999
(die internationale Version von(02) 9999 9999
) überprüfen, wird diese als gültige Nummer mit Formatierung zurückgegeben:libphonenumber bietet Ihnen außerdem viele zusätzliche Vorteile, z. B. das Abrufen des Standorts, an dem die Telefonnummer erkannt wurde, und das Abrufen der Zeitzoneninformationen von der Telefonnummer:
Die ungültige australische Telefonnummer (
(09) 9999 9999
) gibt jedoch zurück, dass es sich nicht um eine gültige Telefonnummer handelt.Die Google-Version enthält Code für Java und Javascript. Es wurden jedoch auch Bibliotheken für andere Sprachen implementiert, die den Google i18n-Telefonnummern-Datensatz verwenden:
Sofern Sie nicht sicher sind, dass Sie immer Nummern aus einem Gebietsschema akzeptieren und diese immer in einem Format vorliegen, würde ich dringend empfehlen, keinen eigenen Code dafür zu schreiben und libphonenumber zum Überprüfen und Anzeigen von Telefonnummern zu verwenden.
quelle
07700000000
eingebe, wird eineMissing or invalid default region.
Fehlermeldung angezeigt. Aber wenn ich den Ländercode spezifiziere, wird er übergeben./^(?:(?:\(?(?:00|\+)([1-4]\d\d|[1-9]\d?)\)?)?[\-\.\ \\\/]?)?((?:\(?\d{1,}\)?[\-\.\ \\\/]?){0,})(?:[\-\.\ \\\/]?(?:#|ext\.?|extension|x)[\-\.\ \\\/]?(\d+))?$/i
Dies passt zu:
Auf $ n spart es:
Sie können es unter https://www.regexpal.com/?fam=99127 testen
quelle
^
und$
sonst zu umgehen , ich bin in der Lage es mit[111] [111] [1111]
oder111--111--1111
und dergleichen. (Entschuldigung, habe meinen letzten Kommentar gelöscht)^
und das nehmen$
?[111] [111] [1111]
und111--111--1111
bis ich sie entfernt^
und$
aus der Regex entfernt habe umgangen.Obwohl die Antwort zum Entfernen aller Leerzeichen ordentlich ist, löst sie das Problem, das darin besteht, einen regulären Ausdruck zu finden, nicht wirklich. Nehmen Sie zum Beispiel mein Testskript, das eine Webseite herunterlädt und alle Telefonnummern mit dem regulären Ausdruck extrahiert. Da Sie sowieso eine Regex benötigen, können Sie die Regex genauso gut die ganze Arbeit erledigen lassen. Ich habe mir das ausgedacht:
Hier ist ein Perl-Skript zum Testen. Wenn Sie übereinstimmen, enthält $ 1 die Vorwahl, $ 2 und $ 3 die Telefonnummer und $ 5 die Nebenstelle. Mein Testskript lädt eine Datei aus dem Internet herunter und druckt alle darin enthaltenen Telefonnummern aus.
Bearbeiten:
Sie können \ W * im regulären Ausdruck in \ s * \ W? \ S * ändern, um es etwas zu straffen. Ich habe nicht an den regulären Ausdruck gedacht, um beispielsweise Benutzereingaben in einem Formular zu validieren, als ich ihn geschrieben habe, aber diese Änderung ermöglicht es, den regulären Ausdruck für diesen Zweck zu verwenden.
quelle
(4570457-6789
wäre ein ziemlich häufiger Tippfehler. Die Spielgruppen werden auch verzerrt: rubular.com/r/TaTP0mHL5c(^|[^\d\n])
(mit aktiviertem mehrzeiligen Flag) vermeidet das allgemeine Problem, indem sichergestellt wird, dass nicht unmittelbar etwas Numerisches vorangestellt wird.Ich beantwortete diese Frage bei einer anderen SO-Frage, bevor ich mich entschied, meine Antwort auch als Antwort in diesen Thread aufzunehmen, da sich niemand damit befasste, wie Elemente erforderlich / nicht erforderlich sind, sondern nur Regexs verteilten: Regex funktioniert falsch und passt zu unerwarteten Dingen
Aus meinem Beitrag auf dieser Website habe ich eine Kurzanleitung erstellt, die jedem hilft, einen eigenen regulären Ausdruck für das gewünschte Telefonnummernformat zu erstellen. Ich werde (wie auf der anderen Website) darauf hinweisen, dass Sie, wenn Sie zu restriktiv sind, Möglicherweise erhalten Sie nicht die gewünschten Ergebnisse, und es gibt keine "Einheitslösung" für die Annahme aller möglichen Telefonnummern auf der Welt - nur das, was Sie als Format Ihrer Wahl akzeptieren. Benutzung auf eigene Gefahr.
Schneller Spickzettel
/^
[\s]
oder\s
[(]
und[)]
. Verwenden\(
und\)
ist hässlich und kann die Dinge verwirren.?
nach-
oder ein[-]
. Wenn Sie es jedoch nicht an erster oder letzter Stelle in einer Reihe anderer Zeichen setzen, müssen Sie es möglicherweise umgehen:\-
[-.\s]
Benötigt einen Bindestrich, einen Punkt oder ein Leerzeichen. Ein Fragezeichen nach der letzten Klammer macht alle für diesen Steckplatz optional.\d{3}
: Erfordert eine dreistellige Nummer: 000-999. Abkürzung für[0-9][0-9][0-9]
.[2-9]
: Benötigt eine Ziffer 2-9 für diesen Steckplatz.(\+|1\s)?
: Akzeptiere ein "Plus" oder eine 1 und ein Leerzeichen (Pipe-Zeichen,|
, ist "oder") und machen Sie es optional. Das Pluszeichen muss maskiert werden.[246]
eine 2, 4 oder 6.[77|78]
Benötigt 77 oder 78.$/
: Beende den Ausdruckquelle
[2-9]
Block, den ich dort eingefügt habe. Das bedeutet, dass Ihr Minimum 2 und Ihr Maximum 9 beträgt. Passen Sie es entsprechend an.Ich habe am einfachsten geschrieben (obwohl ich keinen Punkt darin brauchte).
Wie unten erwähnt, wird nur nach Zeichen gesucht, nicht nach Struktur / Reihenfolge
quelle
Wenn Sie nur überprüfen möchten, ob Sie keinen zufälligen Müll auf dem Feld haben (dh von Formular-Spammern), sollte dieser reguläre Ausdruck gut funktionieren:
Beachten Sie, dass es keine speziellen Regeln für die Anzahl der Ziffern oder die in diesen Ziffern gültigen Zahlen gibt. Es wird lediglich überprüft, ob nur Ziffern, Klammern, Bindestriche, Pluszeichen, Leerzeichen, Pfund, Sternchen, Punkte, Kommas oder Buchstaben vorhanden sind
e
,x
,t
vorhanden sind.Es sollte mit internationalen Nummern und Lokalisierungsformaten kompatibel sein. Planen Sie für einige Regionen die Notwendigkeit, eckige, lockige oder abgewinkelte Klammern zuzulassen? (Derzeit sind sie nicht enthalten).
Wenn Sie Regeln pro Ziffer beibehalten möchten (z. B. in US-Vorwahlen und Präfixen (Umtauschcodes), die im Bereich von 200 bis 999 liegen müssen), wünschen wir Ihnen viel Glück. Die Aufrechterhaltung eines komplexen Regelsatzes, der zu irgendeinem Zeitpunkt in der Zukunft von jedem Land der Welt veraltet sein könnte, klingt nicht nach Spaß.
Während das Entfernen aller / der meisten nicht numerischen Zeichen auf der Serverseite möglicherweise gut funktioniert (insbesondere, wenn Sie diese Werte an einen Dialer übergeben möchten), möchten Sie möglicherweise die Benutzereingaben während der Validierung nicht verwerfen, insbesondere wenn Sie dies wünschen Nehmen Sie Korrekturen in einem anderen Feld vor.
quelle
Beachten Sie, dass das Entfernen von
()
Zeichen für einen gängigen Schreibstil für UK-Nummern nicht funktioniert:+44 (0) 1234 567890
Dies bedeutet, dass Sie entweder die internationale Nummer+441234567890
oder die UK- Nummer wählen
01234567890
quelle
Haben Sie sich RegExLib angesehen? ?
Die Eingabe der US-Telefonnummer brachte eine ganze Reihe von Möglichkeiten zurück.
quelle
Mein Versuch einer uneingeschränkten Regex:
Akzeptiert:
Lehnt ab:
Es liegt an Ihnen, es für die Anzeige zu bereinigen. Nach der Validierung kann es sich jedoch um eine Zahl handeln.
quelle
Ich fand das ganz gut:
Es funktioniert für diese Zahlenformate:
Stellen Sie sicher, dass Sie globale UND mehrzeilige Flags verwenden, um dies sicherzustellen.
Link: http://www.regexr.com/3bp4b
quelle
Wenn Sie über die Formularvalidierung sprechen, wird der reguläre Ausdruck zur Validierung der korrekten Bedeutung sowie der korrekten Daten aufgrund unterschiedlicher Länder- und Anbieterstandards äußerst komplex sein. Es wird auch schwierig sein, auf dem Laufenden zu bleiben.
Ich interpretiere die Frage so, dass nach einem allgemein gültigen Muster gesucht wird, das möglicherweise nicht intern konsistent ist - zum Beispiel mit einem gültigen Satz von Nummern, aber ohne zu bestätigen, dass die Amtsleitung, der Austausch usw. mit dem gültigen Muster für das Ländercode-Präfix übereinstimmen .
Nordamerika ist unkompliziert, und für internationale Unternehmen bevorzuge ich ein "idiomatisches" Muster, das die Art und Weise abdeckt, wie Menschen ihre Zahlen spezifizieren und sich daran erinnern:
Das nordamerikanische Muster stellt sicher, dass beide enthalten sind, wenn eine Klammer enthalten ist. Die internationalen Konten enthalten ein optionales Anfangsbuchstaben '+' und einen Ländercode. Danach sind Sie in der Sprache. Gültige Übereinstimmungen wären:
(xxx)xxx-xxxx
(xxx)-xxx-xxxx
(xxx)xxx-xxxx x123
12 1234 123 1 x1111
12 12 12 12 12
12 1 1234 123456 x12345
+12 1234 1234
+12 12 12 1234
+12 1234 5678
+12 12345678
Dies kann voreingenommen sein, da meine Erfahrung auf Nordamerika, Europa und ein kleines Stück Asien beschränkt ist.
quelle
invalid quantifier
Fehlermeldung. Irgendwelche Ideen, was ich falsch mache?Hier ist ein wunderbares Muster, das am ehesten mit der Validierung übereinstimmt, die ich erreichen musste. Ich bin nicht der ursprüngliche Autor, aber ich denke, es lohnt sich, dies zu teilen, da ich dieses Problem als sehr komplex und ohne eine präzise oder allgemein nützliche Antwort empfand.
Der folgende reguläre Ausdruck erfasst häufig verwendete Zahlen- und Zeichenkombinationen in einer Vielzahl globaler Telefonnummernformate:
/^\s*(?:\+?(\d{1,3}))?([-. (]*(\d{3})[-. )]*)?((\d{3})[-. ]*(\d{2,4})(?:[-.x ]*(\d+))?)\s*$/gm
Positiv:
+42 555.123.4567
+ 1- (800) -123-4567
+7 555 1234567
+7 (926) 1234567
(926) 1234567
+79261234567
926 1234567
9261234567
1234567
123-4567
123-89-01
495 1234567
469 123 45 67
89261234567
8 (926) 1234567
926.123.4567
415-555-1234
650-555-2345
(416)555-3456
202 555 4567
4035555678
1 416 555 9292
Negativ:
926 3 4
8 800 600-APPLE
Ursprüngliche Quelle: http://www.regexr.com/38pvb
quelle
Mein Bauchgefühl wird durch die Anzahl der Antworten auf dieses Thema verstärkt - dass es praktisch unendlich viele Lösungen für dieses Problem gibt, von denen keine elegant sein wird.
Ehrlich gesagt würde ich empfehlen, dass Sie nicht versuchen, Telefonnummern zu validieren. Selbst wenn Sie einen großen, haarigen Validator schreiben könnten, der all die verschiedenen legitimen Formate zulässt, würde er am Ende so ziemlich alles zulassen, was überhaupt einer Telefonnummer ähnelt.
Meiner Meinung nach besteht die eleganteste Lösung darin, eine Mindestlänge zu validieren, nicht mehr.
quelle
Dies ist ein einfaches Muster für reguläre Ausdrücke für philippinische Mobiltelefonnummern:
oder
wird diesen entsprechen:
Der erste entspricht JEDEM zweistelligen Ländercode, während der zweite ausschließlich dem philippinischen Ländercode entspricht.
Testen Sie es hier: http://refiddle.com/1ox
quelle
Hier ist mein bisher bester Versuch. Es behandelt die oben genannten Formate, aber ich bin sicher, dass mir einige andere mögliche Formate fehlen.
quelle
Es wird Ihnen schwer fallen, mit internationalen Nummern mit einem einzigen / einfachen regulären Ausdruck umzugehen. Lesen Sie diesen Beitrag über die Schwierigkeiten internationaler (und sogar nordamerikanischer) Telefonnummern.
Sie sollten die ersten Ziffern analysieren, um festzustellen, wie der Ländercode lautet, und dann je nach Land unterschiedlich handeln.
Darüber hinaus - die Liste, die Sie angegeben haben, enthält kein anderes gängiges US-Format - wird das ursprüngliche 1 weggelassen. Die meisten Mobiltelefone in den USA benötigen es nicht und es wird die jüngere Generation verblüffen, es sei denn, sie haben international gewählt.
Sie haben richtig erkannt, dass es ein heikles Problem ist ...
-Adam
quelle
Nach dem Lesen dieser Antworten scheint es keinen einfachen regulären Ausdruck zu geben, der eine Reihe von Texten analysieren und Telefonnummern in einem beliebigen Format (einschließlich international mit und ohne Pluszeichen) herausziehen kann.
Folgendes habe ich kürzlich für ein Kundenprojekt verwendet, bei dem wir alle Telefonnummern in einem beliebigen Format in tel: links konvertieren mussten.
Bisher hat es mit allem funktioniert, was sie darauf geworfen haben, aber wenn Fehler auftreten, werde ich diese Antwort aktualisieren.
Regex:
/(\+*\d{1,})*([ |\(])*(\d{3})[^\d]*(\d{3})[^\d]*(\d{4})/
PHP-Funktion zum Ersetzen aller Telefonnummern durch tel: links (falls jemand neugierig ist):
quelle
+1 1234562222222222222222222222
.Ich glaube, dass die Perl-Module Number :: Phone :: US und Regexp :: Common (insbesondere die Quelle von Regexp :: Common :: URI :: RFC2806 ) helfen könnten.
Die Frage sollte wahrscheinlich etwas genauer spezifiziert werden, um den Zweck der Validierung der Zahlen zu erläutern. Zum Beispiel ist 911 eine gültige Zahl in den USA, aber 911x ist nicht für einen Wert von x. Auf diese Weise kann die Telefongesellschaft berechnen, wann Sie mit dem Wählen fertig sind. Es gibt verschiedene Variationen zu diesem Thema. Ihr regulärer Ausdruck überprüft jedoch nicht den Teil der Vorwahl, sodass dies kein Problem zu sein scheint.
Wie bei der Überprüfung von E-Mail-Adressen können Sie auch dann, wenn Sie ein gültiges Ergebnis haben, nicht wissen, ob es jemandem zugewiesen wurde, bis Sie es versuchen.
Wenn Sie versuchen, Benutzereingaben zu validieren, können Sie das Ergebnis normalisieren und damit fertig sein. Wenn der Benutzer eine Nummer eingibt, die Sie nicht als gültige Nummer erkennen können, speichern Sie diese entweder als eingegeben oder entfernen Sie nicht verfügbare Zeichen. Das Modul Number :: Phone :: Normalize Perl könnte eine Inspirationsquelle sein.
quelle
Ich arbeite für ein Marktforschungsunternehmen und wir müssen diese Art von Input immer filtern. Sie erschweren es zu sehr. Entfernen Sie einfach die nicht alphanumerischen Zeichen und prüfen Sie, ob es eine Erweiterung gibt.
Für weitere Analysen können Sie einen von vielen Anbietern abonnieren, die Ihnen Zugriff auf eine Datenbank mit gültigen Nummern gewähren und Ihnen mitteilen, ob es sich um Festnetz- oder Mobiltelefone handelt, die nicht verbunden sind usw. Dies kostet Geld.
quelle
Ersetzen Sie das Formatieren von Zeichen und überprüfen Sie die verbleibende Gültigkeit des Telefons. In PHP
Das Brechen eines solchen komplexen regulären Ausdrucks kann genauso effektiv sein, aber viel einfacher.
quelle
Ich fand das etwas interessantes. Ich habe es nicht getestet, aber es sieht so aus, als würde es funktionieren
quelle
Sie sind wahrscheinlich besser dran, wenn Sie dafür einen maskierten Eingang verwenden. Auf diese Weise können Benutzer NUR Zahlen eingeben und nach Belieben formatieren. Ich bin nicht sicher, ob dies für eine Webanwendung ist, aber wenn dies der Fall ist, gibt es ein sehr klickendes jQuery-Plugin, das einige Optionen dafür bietet.
http://digitalbush.com/projects/masked-input-plugin/
In ihrem Tutorial wird sogar erläutert, wie Telefonnummern eingegeben werden.
quelle
Hier ist eine, die in JavaScript gut funktioniert. Es ist in einer Zeichenfolge, weil das Dojo-Widget dies erwartet hatte.
Es entspricht einer 10-stelligen Nordamerika-NANP-Nummer mit optionaler Erweiterung. Leerzeichen, Bindestriche und Punkte werden als Trennzeichen akzeptiert.
quelle
Ich hatte mit dem gleichen Problem zu kämpfen und versuchte, meine Bewerbung zukunftssicher zu machen, aber diese Leute haben mich in die richtige Richtung gebracht. Ich überprüfe die Nummer selbst nicht, um festzustellen, ob sie funktioniert oder nicht. Ich versuche nur sicherzustellen, dass eine Reihe von Nummern eingegeben wurde, die möglicherweise eine Nebenstelle haben oder nicht.
Im schlimmsten Fall, wenn der Benutzer eine unformatierte Nummer aus der XML-Datei ziehen müsste, würde er die Nummern immer noch einfach in den Nummernblock des Telefons eingeben
012345678x5
, kein wirklicher Grund, sie hübsch zu halten. Diese Art von RegEx würde für mich ungefähr so herauskommen:01234467 extension 123456
01234567x123456
01234567890
quelle
Meine Neigung ist es zuzustimmen, dass das Entfernen von nicht-Ziffern und das Akzeptieren dessen, was da ist, am besten ist. Vielleicht, um sicherzustellen, dass mindestens ein paar Ziffern vorhanden sind, obwohl dies beispielsweise eine alphabetische Telefonnummer "ASK-JAKE" verbietet.
Ein paar einfache Perl-Ausdrücke könnten sein:
Verwenden Sie die erste, um die Zifferngruppen zusammenzuhalten, was möglicherweise Hinweise zur Formatierung gibt. Verwenden Sie die zweite, um alle Nicht-Ziffern trivial zu werfen.
Ist es besorgniserregend, dass möglicherweise eine Pause eingelegt und dann weitere Tasten eingegeben werden müssen? Oder so etwas wie 555-1212 (auf den Piepton warten) 123?
quelle
Muss mit einer Ziffer enden, kann mit (oder + oder einer Ziffer beginnen und kann + - (oder) enthalten
quelle
Für alle, die daran interessiert sind, etwas Ähnliches mit irischen Mobiltelefonnummern zu tun, gibt es eine einfache Möglichkeit, dies zu erreichen:
http://ilovenicii.com/?p=87
PHP
Es gibt auch eine JQuery-Lösung für diesen Link.
BEARBEITEN:
jQuery-Lösung:
Quelle .
quelle