Ell20 Posted February 12, 2008 Share Posted February 12, 2008 Hi, Im attempting to make a regular expression to check that the data input is a valid telephone number. Im looking to accept telephone numbers in either of these formats: +447973886123 or +4407973886123 or 07973886123 I have had ago but dont think its working correctly: if (eregi ("[a-z0-9\+]{11,14}", stripslashes(trim($_POST['contact_number'])))) { Appreciate any help Quote Link to comment Share on other sites More sharing options...
thebadbad Posted February 12, 2008 Share Posted February 12, 2008 I know why it isn't working: If you enter a number that's, say, too long, eregi will still return true, because it found a number sequence between 11 and 14 in length (i.e. it doesn't care about the rest of the input). I don't know too much about RegEx, but I found a working solution. You just compare the length of the input with the length of the matched number; if they are equal, the input is valid, else invalid. <?php eregi('(\+?[0-9]{11,13})', stripslashes(trim($_POST['contact_number'])), $regs); if (strlen(stripslashes(trim($_POST['contact_number']))) == strlen(trim($regs[1]))) { echo 'The number is valid!'; } else { echo 'The number is invalid.'; } ?> I removed the a-z from the pattern, and added the optional plus at the start (question mark means 0 or 1 of the previous character; the escaped plus). And the max length of numbers is now 13, because I left out the plus. You should also remember that special characters inside square brackets mustn't be escaped, as they are matched literally. Quote Link to comment Share on other sites More sharing options...
Ell20 Posted February 12, 2008 Author Share Posted February 12, 2008 Seems to be working! Thanks alot for your help! Cheers Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.