anup navare
anup navare

Reputation: 21

mobile number validation using regex javascript

I want mobile number in format +91(or any other country code)-9999999999(10 digit mobile number).

I have tried /^\+[0-9]{2,3}+[0-9]\d{10}, but its not working please help

Thanks in advance

Upvotes: 0

Views: 43430

Answers (6)

Ankit Dubey
Ankit Dubey

Reputation: 1170

You can simply write the following:

var pattern=/^(0|[+91]{3})?[7-9][0-9]{9}$/;

Upvotes: 2

Shafiqul Islam
Shafiqul Islam

Reputation: 5690

For mobile validation please try this

<html>
<head>
<title>Mobile number validation using regex</title>
<script type="text/javascript">
    function validate() {
        var mobile = document.getElementById("mobile").value;
        var pattern = /^[7-9][0-9]{9}$/;
        if (pattern.test(mobile)) {
            alert("Your mobile number : "+mobile);
            return true;
        }
        alert("It is not valid mobile number");
        return false;

    }
</script>

</head>
<body>
Enter Mobile No. :
<input type="text" name="mobile" id="mobile" />
<input type="submit" value="Check" onclick="validate();" />
</body>
</html>

Upvotes: 1

user2511671
user2511671

Reputation:

Use the mask function

jQuery(function($){
  $("#phone").mask("999-999-9999",{placeholder:" "});   
});

look here http://office.microsoft.com/en-in/access-help/control-data-entry-formats-with-input-masks-HA010096452.aspx

Upvotes: 1

Matyas
Matyas

Reputation: 13702

Solution in short:

// should return an array with a single match representing the phone number in arr[0]
var arr = '+49-1234567890'.match(/^\+\d{1,3}-\d{9,10}$/); 
// should return null
var nullVal = 'invalid entry'.match(/^\+\d{1,3}-\d{9,10}$/); 

Longer explanation:

  • / start regex
  • ^ try to match from the beginning
  • \+ match a + sign
  • \d{1,3} match a digit 1 to 3 times
  • - match a dash
  • \d{9,10} match 9 or 10 digits
  • $ force the matching to be only valid if can be applied until string termination
  • / finish regex

Knowing what the regex does, might let you modify it to your own needs

Sometimes it is good to ignore any whitespaces you come across. \s* matches 0 or n whitespaces. So in order to be more permissive you could let users input something like ' + 49 - 1232345 '

The regex to match this would be /^\s*\+\s*\d{1,3}\s*-\s*\d{9, 10}\s*$/ (just filled the possible space locations with \s*)

Other than that: I warmly recommend mastering regexes, because they come really handy in many situations.

Upvotes: 8

Savv
Savv

Reputation: 431

\+[0-9]{2,3}-[0-9]+

Try this. This matches a + in the beginning, two or three numbers for the country code, followed by a - followed by any number of numbers

Upvotes: 1

Richard
Richard

Reputation: 108975

If you are expecting a dash in the number (which your format shows), there is nothing in your regex to match it: is the second plus in the regex meant to be a dash?

^\+[0-9]{2,3}-[0-9]\d{10}

Also note that:

  1. some country codes are single digit (eg. 1 for North America, 7 for Russia), these will not be matched
  2. I doubt the local part of all mobiles everywhere is always 10 digits (eg. it won't be enough in countries with large populations as mobile ownership grows)

Upvotes: 2

Related Questions