2011-01-09 13 views
14

Ich versuche, eine (US) Telefonnummer ohne zusätzliche Zeichen zu validieren. Also das Format ist 1-555-555-5555 ohne Bindestriche, Leerzeichen usw. und die 1 ist optional. Mein regulärer Ausdruck wird jedoch NUR Zahlen mit der führenden 1 ausschließen und Zahlen ohne sie sind ungültig. Hier ist was ich benutze, wo bin ich falsch gelaufen?make Zeichen optional in regulären Ausdruck

"^(1)\\d{10}$" 
+0

ohne Bindestriche oder Leerzeichen? Ist Ihnen bewusst, dass Sie es für den Benutzer schwieriger machen, wenn Sie das tun (Studien zeigen, dass Menschen mit langen Ziffernfolgen mehr Schwierigkeiten haben als mit kürzeren Zeichenfolgen mit Trennzeichen)? Lassen Sie die Bindestriche und Leerzeichen zu und streichen Sie sie bei der Eingabe einfach aus. Machen Sie den Benutzer nicht dazu, was Ihre Software tun kann. Ihre Benutzer werden es Ihnen danken. –

+0

Design nicht zu mir, aber ich stimme zu :) – schwiz

Antwort

26

Verwendung:

"^1?\\d{10}$" 

Das? bedeutet "optional".

+1

ahh ok aus irgendeinem Grund dachte ich, die Klammer bedeutet optional. Vielen Dank! – schwiz

14

Sie nichts machen die 1 optional getan haben. Du hast es in eine Gruppe gelegt, aber das ist alles. Sie wollen dies:

"^1?\\d{10}$" 

, die im Grunde (in dieser Reihenfolge) übereinstimmen sagt:

  • Der Beginn der Zeichenfolge
  • Optional kann das Zeichen '1'
  • Genau zehn Ziffern
  • Das Ende der Zeichenfolge

Schauen Sie sich die 012 anfür weitere Details. Zum Beispiel wird ? im Abschnitt "Greedy Quantifiers" wie folgt aufgeführt:

X?               X, einmal oder gar nicht

+2

Danke für Ihre Antwort zu geben Daniel, Sie haben viel Rep und Abzeichen ;-) – schwiz

+1

lol, danke! :) – Daniel

+0

Sie haben viele Wiederholungen und Abzeichen: D – Michelle

2

Verwenden Sie diese "/^((\+?1-[2-9]\d{2}-[2-9]\d{2}-\d{4})|(\([2-9]\d{2}\)(\s)?[2-9]\d{2}-\d{4}))$/" Es erlaubt nur US-zugelassenen Nummern, die "1-xxx-xxx-xxxx", "+ 1-xxx-xxx-xxxx", (xxx) xxx-xxxx enthalten. Ich hoffe, das ist was du suchst.

+0

Das hat nichts mit der Frage zu tun. – Toto

+0

Ich denke, dieser Ausdruck ist genug, um irgendeine Zahl in den USA zu validieren, nicht wahr? –

Verwandte Themen