Skip to content
Advertisement

PHP preg_match for validating 10 digit mobile number

I am trying to validate 10 digits mobile number using PHP function preg_match. The below code does not produce any output.

Is it the regex wrong? or I am using it incorrectly.

I was expecting Hi True in the output. if it matches or Hi False if it does not match.

<?php
$value = '9987199871';
$mobileregex = "/^[1-9][0-9]{10}$/" ;  
echo "Hi " . preg_match($mobileregex, $value) === 1; // @debug
?>

regex taken from https://stackoverflow.com/a/7649835/4050261

Advertisement

Answer

The regex you stated will match eleven digits, not ten. Since all Indian mobile numbers start with 9,8,7, or 6, we can use the following regex:

^[6-9][0-9]{9}$

Here is your code snippet updated:

$value = '9987199871';
$mobileregex = "/^[6-9][0-9]{9}$/" ;  
echo "Hi " . preg_match($mobileregex, $value) === 1;

Note that the above regex is still probably far from the best we could do in terms of validation, but it is at least a start.

User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement