Solved

Phone number Regular Expression Validators

Posted on 2010-09-20
10
854 Views
Last Modified: 2012-05-10
Hi There

I am trying to force a user to insert a number in a specified format.

Our cell numbers in south africa is in the following format
0845678890
I need them to write the number as
+27845678890

I currently have a kasked extender that works like this
<ajaxToolkit:MaskedEditExtender runat="server" ID="mee" ClearMaskOnLostFocus="false" TargetControlID="txtCell" Mask="+27999999999"></ajaxToolkit:MaskedEditExtender>

But the users are still entering the nu,mbers incorrectly.

I need a regular expression that there is no 0 after the 27 and that the amount of digits is 11 exluding the +

Thanks
Stanton


0
Comment
Question by:Stanton_Roux
10 Comments
 
LVL 2

Expert Comment

by:jon47
ID: 33715786
A couple of points:
1 - you can't do that with Microsoft's ajax toolkit - the format descriptors aren't rich enough to define something as being 1-9 (and not 0).  You'd get closer with "\+\2\799999999", but this still wouldn't stop people entering +240...
2 - the masked edit extender relies on javascript.  If a user's browser doesn't have javascript, or the user has disabled it, then you get no mask applied anyway.

You'd do better letting your users enter a number in a way that makes sense to /them/, and then parsing the number to get the format /you/ want.  You could do this client-side with javascript, but as per note 2 above you'd have to be able to do it server side as well for non-javascript browsers.

Jon
0
 
LVL 13

Expert Comment

by:copyPasteGhost
ID: 33715852
you can use the asp:regular expression control.

Here is the regex you are looking for:

"^[+][2][7][1-9]{8}$"

CPG

0
 
LVL 14

Expert Comment

by:ddsh79
ID: 33715862
You can try this
 \+27[0-9]{9}
0
 
LVL 74

Accepted Solution

by:
käµfm³d   👽 earned 500 total points
ID: 33716008
This pattern should suit you:
^(?=\+27[1-9]\d+).{12}$

Open in new window

0
 
LVL 30

Expert Comment

by:Marco Gasi
ID: 33716079
I agree with jon47: let your user type phon number as they wish, post the form and receiving the form formta number as you wish.
Using php you can do this way:

<?php
$phone_number = $_POST['phone_number'];
//$phone_number = "0845678890";
$phone_number = preg_replace("/\b0/", "", $phone_number);
$phone_number = "+27".$phone_number;
if (strlen($phone_number)>12){
    echo "Invalid phone number.";
}else echo $phone_number;
?>
0
Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

 
LVL 13

Expert Comment

by:copyPasteGhost
ID: 33716331
I misread your question, I thought you wanted 11 including the + not excluding..

Modification of my previous post:

"^[+][2][7][1-9]{9}$"
0
 
LVL 74

Expert Comment

by:käµfm³d 👽
ID: 33717334
@copyPasteGhost

It's a bit redundant to put a single character in a character class--just have the character as the pattern itself. Also, your pattern is omitting zero as a valid number in the phone number. Only the first digit after "27" is not supposed to be zero, unless I am reading the question wrong  :)

I guess in hindsight, the lookahead wasn't really necessary in my post. The pattern could simply be:
^\+27[1-9]\d{8}$

Open in new window

0
 
LVL 13

Expert Comment

by:copyPasteGhost
ID: 33717370
Thanks kaufmed. RegEx is something I'm trying to brush up on. (thus why i'm trying to participate is these kind of questions more.

what does
^\+27 mean?

I know ^ is the beginning of the line.

but what does the \ before "+27" do?

thanks.
CPG
0
 
LVL 74

Expert Comment

by:käµfm³d 👽
ID: 33717483
Plus (+) is a special character in regex (one-or-more). Since you want to find a literal plus, you have to escape it in the pattern. That is what the backslash does. You don't need to escape it inside of a character class, though, so your usage of it was OK.
0
 
LVL 13

Expert Comment

by:copyPasteGhost
ID: 33717502
Ah I see. ok cool thanks.
0

Featured Post

Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

Join & Write a Comment

User art_snob (http://www.experts-exchange.com/M_6114203.html) encountered strange behavior of Android Web browser on his Mobile Web site. It took a while to find the true cause. It happens so, that the Android Web browser (at least up to OS ver. 2.…
Introduction HyperText Transfer Protocol (http://www.ietf.org/rfc/rfc2616.txt) or "HTTP" is the underpinning of internet communication.  As a teacher of web development I have heard many questions, mostly from my younger students who have come to t…
Learn how to match and substitute tagged data using PHP regular expressions. Demonstrated on Windows 7, but also applies to other operating systems. Demonstrated technique applies to PHP (all versions) and Firefox, but very similar techniques will w…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now