1

I am making a phone number validator and all numbers should start with 168 and then followed by 9 digits 123456789.In total the phone number should only have 12 digits.

I have tried this

$phoneNumber = '168921500789';
    if( preg_match( "/^\168[0-9]{9}$/", $phoneNumber ) ){
  echo "Valid number";
} else {
  echo "Invalid number";
}

When i run the script,the number is not valid.How can i make the script take only 12 digits that must start with 168?.

1
  • 1
    I'm not sure about phone number validation. You can test wether it matches a pattern but this does not prevent from entering a wrong number anyways. Commented Aug 25, 2014 at 12:28

3 Answers 3

7

Your RegEx is wrong, there's an useless backslash before the 1. Correct:

/^168[0-9]{9}$/

Full code:

$phoneNumber = '168921500789';
if( preg_match( "/^168[0-9]{9}$/", $phoneNumber ) ){
  echo "Valid number";
} else {
  echo "Invalid number";
}
Sign up to request clarification or add additional context in comments.

Comments

3

You had to remove 1 slash:

$phoneNumber = '168921500789';
    if( preg_match( "/^168[0-9]{9}$/", $phoneNumber ) ){
  echo "Valid number";
} else {
  echo "Invalid number";
}

Comments

1

we using like this, with referred this link

public function validatePhoneNumber($number){
 $formats = array(
    '###-###-####', '####-###-###',
    '(###) ###-###','####-####-####',
    '##-###-####-####','####-####','###-###-###',
    '#####-###-###', '##########', '#########',
    '# ### #####', '#-### #####'
 );

 $format = trim(preg_replace('/[0-9]/', '#', $number));
 return (in_array($format, $formats)) ? true : false;
}

1 Comment

Be careful. It is not universal validator. It does not handle variants starting with 00 or + sign.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.