简体   繁体   中英

Regular expression to match phone numbers with country codes

This is the regular expression I use to match phone numbers like:

00 00 00 00 00
00 00 0 00 00 00 00
+00 0 00 00 00 00

(\d{2}\s+\d{2}\s+\d{2}\s+\d{2}\s+\d{2})\s+(\d{2}\s+\d{2}\s+\d\s+\d{2}\s+\d{2}\s+\d{2}\s+\d{2})\s+(+\d{2}\s+\d\s+\d{2}\s+\d{2}\s+\d{2}\s+\d{2})

I have tried to include it into my javascript but It's not really working

if(document.maj_profil.phone.value.search(/^\(\d{2}\s+\d{2}\s+\d{2}\s+\d{2}\s+\d{2}\)\s+\(\d{2}\s+\d{2}\s+\d\s+\d{2}\s+\d{2}\s+\d{2}\s+\d{2}\)\s+\(+\d{2}\s+\d\s+\d{2}\s+\d{2}\s+\d{2}\s+\d{2}\)/) == -1)
    {
    displayDialog('wrong phone format')
        }
  1. Where you have your alternative formats listed like:

     (...)\\s+(...)\\s+(...) 

    Change that to use the | (OR) operator:

     (...)|(...)|(...) 
  2. Don't escape the parentheses. \\( and \\) should be simply ( and ) .

  3. In your third group the + at the beginning should be escaped with a backslash:

     (\\+\\d{2}\\s+\\d\\s+\\d{2}\\s+\\d{2}\\s+\\d{2}\\s+\\d{2}) 

Try this instead:

\d\d(\s+\d\d){4}|(\d\d\s+\d\d\s+\d|\+\s+\d)\d\d(\s+\d\d){3}

which means:

\d\d(\s+\d\d){4}    // 00 00 00 00 00

|                   // OR

(                   // (
  \d\d\s+\d\d\s+\d  //    00 00 0
  |                 //    OR
  \+\s+\d           //    + 0
)                   // )
\d\d(\s+\d\d){3}    // 00 00 00 00

In the javascript, you have escaped all the brackets. Do you want them to behave as capturing groups, or do you want to match actual brackets in the string?

Also use test instead of search. test returns true or false, not a number.

Escaping the parenthesis turns them into literals. Try it without the escapes:

/^(\d{2}\s+\d{2}\s+\d{2}\s+\d{2}\s+\d{2})\s+(\d{2}\s+\d{2}\s+\d\s+\d{2}\s+\d{2}\s+\d{2}\s+\d{2})\s+(\d{2}\s+\d\s+\d{2}\s+\d{2}\s+\d{2}\s+\d{2})/

Try this:

var re = /^\+?(\d{1,2} ?)+$/g
var phone = "00 00 00 00 00"; //"00 00 00 00 00x"; 
if(!re.test(phone))
    alert("wrong phone pattern");

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM