印度电话号码和手机号码的正则表达式校验校验
原标题:Regular Expression Validation For Indian Phone Number and Mobile number
I want to validate Indian phone numbers as well as mobile numbers. The format of the phone number and mobile number is as follows:
For land Line number
03595-259506
03592 245902
03598245785
For mobile number
9775876662
0 9754845789
0-9778545896
+91 9456211568
91 9857842356
919578965389
I would like the regular expression in one regex. I have tried the following regex but it is not working properly.
{^+?[0-9-]+$}
最佳回答
For land Line Number
03595-259506
03592 245902
03598245785
you can use this
d{5}([- ]*)d{6}
NEW for all ;)
OLD: ((+*)(0*|(0 )*|(0-)*|(91 )*)(d{12}+|d{10}+))|d{5}([- ]*)d{6}
NEW: ((+*)((0[ -]*)*|((91 )*))((d{12})+|(d{10})+))|d{5}([- ]*)d{6}
9775876662
0 9754845789
0-9778545896
+91 9456211568
91 9857842356
919578965389
03595-259506
03592 245902
03598245785
this site is useful for me, and maby for you .;)http://gskinner.com/RegExr/
问题回答
Use the following regex
^(+91[-s]?)?[0]?(91)?[789]d{9}$
This will support the following formats:
8880344456
+918880344456
+91 8880344456
+91-8880344456
08880344456
918880344456
This works really fine:
+?d[d -]{8,12}d
Matches:
03598245785
9775876662
0 9754845789
0-9778545896
+91 9456211568
91 9857842356
919578965389
987-98723-9898
+91 98780 98802
06421223054
9934-05-4851
WAQU9876567892
ABCD9876541212
98723-98765
Does NOT match:
2343
234-8700
1 234 765
for mobile number:
const re = /^[6-9]{1}[0-9]{9}$/;
I use the following for one of my python project
Regex
(+91)?(-)?s*?(91)?s*?(d{3})-?s*?(d{3})-?s*?(d{4})
Python usage
re.search(re.compile(r (+91)?(-)?s*?(91)?s*?(d{3})-?s*?(d{3})-?s*?(d{4}) ), text_to_search).group()
Explanation
(+91)? // optionally match +91
(91)? // optionally match 91
-? // optionally match -
s*? // optionally match whitespace
(d{3}) // compulsory match 3 digits
(d{4}) // compulsory match 4 digits
Tested & works for
9992223333
+91 9992223333
91 9992223333
91999 222 3333
+91999 222 3333
+91 999-222-3333
+91 999 222 3333
91 999 222 3333
999 222 3333
+919992223333
For both mobile & fixed numbers: (?:s+|)((0|(?:(+|)91))(?:s|-)*(?:(?:d(?:s|-)*d{9})|(?:d{2}(?:s|-)*d{8})|(?:d{3}(?:s|-)*d{7}))|d{10})(?:s+|)
Explaination:
(?:s+|) // leading spaces
((0|(?:(+|)91)) // prefixed 0, 91 or +91
(?:s|-)* // connecting space or dash (-)
(?:(?:d(?:s|-)*d{9})| // 1 digit STD code & number with connecting space or dash
(?:d{2}(?:s|-)*d{8})| // 2 digit STD code & number with connecting space or dash
(?:d{3}(?:s|-)*d{7})| // 3 digit STD code & number with connecting space or dash
d{10}) // plain 10 digit number
(?:s+|) // trailing spaces
I ve tested it on following text
9775876662
0 9754845789
0-9778545896
+91 9456211568
91 9857842356
919578965389
0359-2595065
0352 2459025
03598245785
07912345678
01123456789
sdasdcsd
+919898101353
dasvsd0
+91 dacsdvsad
davsdvasd
0112776654
You can use regular expression like this.
/^[(]+ ++d{2}[)]+[^0]+d{9}/
For Indian Mobile Numbers
Regular Expression to validate 11 or 12 (starting with 0 or 91) digit number
String regx = "(0/91)?[7-9][0-9]{9}";
String mobileNumber = "09756432848";
check
if(mobileNumber.matches(regx)){
"VALID MOBILE NUMBER"
}else{
"INVALID MOBILE NUMBER"
}
You can check for 10 digit mobile number by removing "(0/91)?" from the regular expression i.e. regx
you can implement following regex regex = ^[6-9][0-9]{9}$
All mobile numbers in India start with 9, 8, 7 or 6. Now, there is a chance that you are not bothering about the prefixes (+91 or 0). If this is your scenario, then you can take the help from the website regextester.com or you can use r ^(+91[-s]?)?[0]?(91)?[789]d{9}$
And if you want to validate the Phone number with prefixes(+91 or 0) then use : r ^[6-9]d{9}$ .
r +?(91?|0?)[-s]?[3-9]d{3}[-s]?d{6}$
explanation
+? # Start with plus sign or not
(91?|0?) # Followed by 91 or 0 or none of them
[-s]? # Followed by either - or space, or none of them
[3-9] # followed by any number from 3 between 9
d{3} # followed by any three digits
d{6} # followed by any six digits
$ # specify string should stop at that point
If you re doing text parsing and said numbers are embedded in random places, this regex can be helpful.
re.compile(r (?:(?:+91[-.s]?)|(?:91[-.s]?)|(?:0[-.s]?))?(?:d{10}|d{5}[-.s]?d{5}) )
It ignores whitespaces, new lines etc.
You Can Use Regex Like This:
^[0-9-(), ]+$
All Landline Numbers and Mobile Number
^[d]{2,4}[- ]?[d]{3}[- ]?[d]{3,5}|([0])?(+d{1,2}[- ]?)?[789]{1}d{9}$
var phonereg = /^(+d{1,3}[- ]?)?d{10}$/;
相关问题
Uncommon regular expressions [closed]
Recently I discovered two amazing regular expression features: ?: and ?!. I was curious of other neat regex features. So maybe you would like to share some tricky regular expressions.
regex to trap img tag, both versions
I need to remove image tags from text, so both versions of the tag:
<img src="" ... ></img>
<img src="" ... />
PHP Preg-Replace more than one underscore
How do I, using preg_replace, replace more than one underscore with just one underscore?
Why does this regular expression not match adjacent occurences of newline?
I was trying to write a regexp to replace all occurrences of
with
unless the
is already preceeded immediately by a
. I m doing this in Ruby 1.8.6 which doesn t support look behind in ...
C++, Boost regex, replace value function of matched value?
Specifically, I have an array of strings called val, and want to replace all instances of "%{n}%" in the input with val[n]. More generally, I want the replace value to be a function of the match ...
PowerShell -match operator and multiple groups
I have the following log entry that I am processing in PowerShell I m trying to extract all the activity names and durations using the -match operator but I am only getting one match group back. I m ...
Is it possible to negate a regular expression search?
I m building a lexical analysis engine in c#. For the most part it is done and works quite well. One of the features of my lexer is that it allows any user to input their own regular expressions. This ...
regex for four-digit numbers (or "default")
I need a regex for four-digit numbers separated by comma ("default" can also be a value).
Examples:
6755
3452,8767,9865,8766,3454
7678,9876
1234,9867,6876,9865
default
Note: "default" ...