Regular expression to match phone numbers with country codes

前端 未结 5 1878
慢半拍i
慢半拍i 2021-01-16 06:37

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}         


        
相关标签:
5条回答
  • 2021-01-16 06:52
    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})
      
    0 讨论(0)
  • 2021-01-16 06:53

    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})/
    
    0 讨论(0)
  • 2021-01-16 06:57

    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
    
    0 讨论(0)
  • 2021-01-16 07: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.

    0 讨论(0)
  • 2021-01-16 07:00

    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");
    
    0 讨论(0)
提交回复
热议问题