Home > other >  regex 13 digits phone number with dash
regex 13 digits phone number with dash

Time:09-24

I have an application that needs to handle validation for phone numbers. Phone numbers are required to have 13 characters (sum of numbers and dashes). There must be at least 1 dash and a maximum of 3 dashes. The starting character must be a digit. How can I create a regex for this validation? Here is my regex string. /^(?:[0-9]-*){13}$/ It doesn't work exactly what I expected

CodePudding user response:

You can use

^(?=.{13}$)[0-9] (?:-[0-9] ){1,3}$
^(?=.{13}$)\d (?:-\d ){1,3}$

See the regex demo. Details:

  • ^ - start of string
  • (?=.{13}$) - the string must contain exactly 13 chars
  • [0-9] / \d - one or more digits
  • (?:-[0-9] ){1,3} / (?:-\d ){1,3} - one, two or three repetitions of a hyphen followed with one or more digits
  • $ - end of string.

CodePudding user response:

So 13 characters in total with a maximum of 3 dashes and a minimum of 1 means 10 digits right? Therefor your characters are ranging 11-13?

If so, try:

^(?=(?:\d-?){10}$)\d (?:-\d ){1,3}

See an online demo

  • ^ - Start line anchor.
  • (?= - Open a positive lookahead:
    • (?: - Open a non-capture group:
      • \d-? - Match a digit and optional hyphen.
      • ){10}$) - Close the non-capture group and match it ten times before the end-string anchor. Then close the lookahead.
  • \d - 1 Digits.
  • (?: - Open a 2nd non-capture group:
    • -\d - Match an hyphen and 1 digits.
    • ){1,3} - Close non-capture group and match it 1-3 times.
  • Related