Regular expression for validating numbers

I replaced the US land line centric international access code 011 with the standard international access code identifier of ' ', making it mandatory. I also changed the minimum for the national number to at least one digit. Note that this DOES NOT take into account national number plan rules - specifically, it allows zeros and ones in locations that national number plans may not allow and also allows number lengths greater than the national number plan for some countries (e.g., the US). The following regex is based on ITU-T E.164 and Annex to ITU Operational Bulletin No. While it could be shortened a bit, I decided to include each code independently. For other countries, replace the international access code (the 011 at the beginning of the regex) with whatever is appropriate for that country's dialing plan. Also, note that ITU E.164 defines the maximum length of a full international telephone number to 15 digits. If you enter a number then a space it works, but if you just input a space, it does not work. You're right on time again Sonu Kapoor, thanks again! It's very hard to find the right answer on this site, as only a handful of posters actually post the correct answer with no missing (essential) information.

The literal “x” character is required only if an extension is provided. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).In this regex tutorial, we will learn to validate user entered phone numbers for a specific format (in this example numbers are formatted in north American format) and if numbers are correct then reformat them to a standard format for display. ([0-9])$"; Pattern pattern = Pattern.compile(regex); for(String email : phone Numbers) Output: 1234567890 : true 123-456-7890 : true 123.456.7890 : true 1 : true (123) 456 7890 : true 12345678 : false 12-12-111 : false List phone Numbers = new Array List(); phone Numbers.add("1234567890"); phone Numbers.add("123-456-7890"); phone Numbers.add("123.456.7890"); phone Numbers.add("1"); phone Numbers.add("(123) 456 7890"); //Invalid phone numbers phone Numbers.add("12345678"); phone Numbers.add("12-12-111"); String regex = "^\(? I have tested formats including 1234567890, 123-456-7890, 123.456.7890, 1, (123) 456 7890, and all such combinations. This means a three digit country code results in up to 12 additional digits, and a 1 digit country code could contain up to 14 additional digits. Hence the ^011(999|998|997|996|995|994|993|992|991| 990|979|978|977|976|975|974|973|972|971|970| 969|968|967|966|965|964|963|962|961|960|899| 898|897|896|895|894|893|892|891|890|889|888| 887|886|885|884|883|882|881|880|879|878|877| 876|875|874|873|872|871|870|859|858|857|856| 855|854|853|852|851|850|839|838|837|836|835| 834|833|832|831|830|809|808|807|806|805|804| 803|802|801|800|699|698|697|696|695|694|693| 692|691|690|689|688|687|686|685|684|683|682| 681|680|679|678|677|676|675|674|673|672|671| 670|599|598|597|596|595|594|593|592|591|590| 509|508|507|506|505|504|503|502|501|500|429| 428|427|426|425|424|423|422|421|420|389|388| 387|386|385|384|383|382|381|380|379|378|377| 376|375|374|373|372|371|370|359|358|357|356| 355|354|353|352|351|350|299|298|297|296|295| 294|293|292|291|290|289|288|287|286|285|284| 283|282|281|280|269|268|267|266|265|264|263| 262|261|260|259|258|257|256|255|254|253|252| 251|250|249|248|247|246|245|244|243|242|241| 240|239|238|237|236|235|234|233|232|231|230| 229|228|227|226|225|224|223|222|221|220|219| 218|217|216|215|214|213|212|211|210|98|95|94| 93|92|91|90|86|84|82|81|66|65|64|63|62|61|60| 58|57|56|55|54|53|52|51|49|48|47|46|45|44|43| 41|40|39|36|34|33|32|31|30|27|20|7|1)[0-9]$ (i) allows for valid international prefixes (ii) followed by 9 or 10 digits, with any type or placing of delimeters (except between the last two digits) This will match: 1-234-567-8901 61-234-567-89-01 46-234 5678901 1 (234) 56 89 901 1 (234) 56-89 901 46.234.567.8901 1/234/567/8901 /(\ |00)(297|93|244|1264|358|355|376|971|54|374|1684|1268|61|43|994|257|32|229|226|880|359|973|1242|387|590|375|501|1441|591|55|1246|673|975|267|236|1|61|41|56|86|225|237|243|242|682|57|269|238|506|53|5999|61|1345|357|420|49|253|1767|45|1809|1829|1849|213|593|20|291|212|34|372|251|358|679|500|33|298|691|241|44|995|44|233|350|224|590|220|245|240|30|1473|299|502|594|1671|592|852|504|385|509|36|62|44|91|246|353|98|964|354|972|39|1876|44|962|81|76|77|254|996|855|686|1869|82|383|965|856|961|231|218|1758|423|94|266|370|352|371|853|590|212|377|373|261|960|52|692|389|223|356|95|382|976|1670|258|222|1664|596|230|265|60|262|264|687|227|672|234|505|683|31|47|977|674|64|968|92|507|64|51|63|680|675|48|1787|1939|850|351|595|970|689|974|262|40|7|250|966|249|221|65|500|4779|677|232|503|378|252|508|381|211|239|597|421|386|46|268|1721|248|963|1649|235|228|66|992|690|993|670|676|1868|216|90|688|886|255|256|380|598|1|998|3906698|379|1784|58|1284|1340|84|678|681|685|967|27|260|263)(9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)\d$/ There's obviously a multitude of ways to do this, as evidenced by all of the different answers given thus far, but I'll throw my [[

The literal “x” character is required only if an extension is provided. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

In this regex tutorial, we will learn to validate user entered phone numbers for a specific format (in this example numbers are formatted in north American format) and if numbers are correct then reformat them to a standard format for display. ([0-9])$"; Pattern pattern = Pattern.compile(regex); for(String email : phone Numbers) Output: 1234567890 : true 123-456-7890 : true 123.456.7890 : true 1 : true (123) 456 7890 : true 12345678 : false 12-12-111 : false List phone Numbers = new Array List(); phone Numbers.add("1234567890"); phone Numbers.add("123-456-7890"); phone Numbers.add("123.456.7890"); phone Numbers.add("1"); phone Numbers.add("(123) 456 7890"); //Invalid phone numbers phone Numbers.add("12345678"); phone Numbers.add("12-12-111"); String regex = "^\\(?

I have tested formats including 1234567890, 123-456-7890, 123.456.7890, 1, (123) 456 7890, and all such combinations.

This means a three digit country code results in up to 12 additional digits, and a 1 digit country code could contain up to 14 additional digits.

Hence the ^011(999|998|997|996|995|994|993|992|991| 990|979|978|977|976|975|974|973|972|971|970| 969|968|967|966|965|964|963|962|961|960|899| 898|897|896|895|894|893|892|891|890|889|888| 887|886|885|884|883|882|881|880|879|878|877| 876|875|874|873|872|871|870|859|858|857|856| 855|854|853|852|851|850|839|838|837|836|835| 834|833|832|831|830|809|808|807|806|805|804| 803|802|801|800|699|698|697|696|695|694|693| 692|691|690|689|688|687|686|685|684|683|682| 681|680|679|678|677|676|675|674|673|672|671| 670|599|598|597|596|595|594|593|592|591|590| 509|508|507|506|505|504|503|502|501|500|429| 428|427|426|425|424|423|422|421|420|389|388| 387|386|385|384|383|382|381|380|379|378|377| 376|375|374|373|372|371|370|359|358|357|356| 355|354|353|352|351|350|299|298|297|296|295| 294|293|292|291|290|289|288|287|286|285|284| 283|282|281|280|269|268|267|266|265|264|263| 262|261|260|259|258|257|256|255|254|253|252| 251|250|249|248|247|246|245|244|243|242|241| 240|239|238|237|236|235|234|233|232|231|230| 229|228|227|226|225|224|223|222|221|220|219| 218|217|216|215|214|213|212|211|210|98|95|94| 93|92|91|90|86|84|82|81|66|65|64|63|62|61|60| 58|57|56|55|54|53|52|51|49|48|47|46|45|44|43| 41|40|39|36|34|33|32|31|30|27|20|7|1)[0-9]$ (i) allows for valid international prefixes (ii) followed by 9 or 10 digits, with any type or placing of delimeters (except between the last two digits) This will match: 1-234-567-8901 61-234-567-89-01 46-234 5678901 1 (234) 56 89 901 1 (234) 56-89 901 46.234.567.8901 1/234/567/8901 /(\ |00)(297|93|244|1264|358|355|376|971|54|374|1684|1268|61|43|994|257|32|229|226|880|359|973|1242|387|590|375|501|1441|591|55|1246|673|975|267|236|1|61|41|56|86|225|237|243|242|682|57|269|238|506|53|5999|61|1345|357|420|49|253|1767|45|1809|1829|1849|213|593|20|291|212|34|372|251|358|679|500|33|298|691|241|44|995|44|233|350|224|590|220|245|240|30|1473|299|502|594|1671|592|852|504|385|509|36|62|44|91|246|353|98|964|354|972|39|1876|44|962|81|76|77|254|996|855|686|1869|82|383|965|856|961|231|218|1758|423|94|266|370|352|371|853|590|212|377|373|261|960|52|692|389|223|356|95|382|976|1670|258|222|1664|596|230|265|60|262|264|687|227|672|234|505|683|31|47|977|674|64|968|92|507|64|51|63|680|675|48|1787|1939|850|351|595|970|689|974|262|40|7|250|966|249|221|65|500|4779|677|232|503|378|252|508|381|211|239|597|421|386|46|268|1721|248|963|1649|235|228|66|992|690|993|670|676|1868|216|90|688|886|255|256|380|598|1|998|3906698|379|1784|58|1284|1340|84|678|681|685|967|27|260|263)(9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)\d$/ There's obviously a multitude of ways to do this, as evidenced by all of the different answers given thus far, but I'll throw my $0.02 worth in here and provide the regex below, which is a bit more terse than nearly all of the above, but more thorough than most as well.

||

The literal “x” character is required only if an extension is provided. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).In this regex tutorial, we will learn to validate user entered phone numbers for a specific format (in this example numbers are formatted in north American format) and if numbers are correct then reformat them to a standard format for display. ([0-9])$"; Pattern pattern = Pattern.compile(regex); for(String email : phone Numbers) Output: 1234567890 : true 123-456-7890 : true 123.456.7890 : true 1 : true (123) 456 7890 : true 12345678 : false 12-12-111 : false List phone Numbers = new Array List(); phone Numbers.add("1234567890"); phone Numbers.add("123-456-7890"); phone Numbers.add("123.456.7890"); phone Numbers.add("1"); phone Numbers.add("(123) 456 7890"); //Invalid phone numbers phone Numbers.add("12345678"); phone Numbers.add("12-12-111"); String regex = "^\\(? I have tested formats including 1234567890, 123-456-7890, 123.456.7890, 1, (123) 456 7890, and all such combinations. This means a three digit country code results in up to 12 additional digits, and a 1 digit country code could contain up to 14 additional digits. Hence the ^011(999|998|997|996|995|994|993|992|991| 990|979|978|977|976|975|974|973|972|971|970| 969|968|967|966|965|964|963|962|961|960|899| 898|897|896|895|894|893|892|891|890|889|888| 887|886|885|884|883|882|881|880|879|878|877| 876|875|874|873|872|871|870|859|858|857|856| 855|854|853|852|851|850|839|838|837|836|835| 834|833|832|831|830|809|808|807|806|805|804| 803|802|801|800|699|698|697|696|695|694|693| 692|691|690|689|688|687|686|685|684|683|682| 681|680|679|678|677|676|675|674|673|672|671| 670|599|598|597|596|595|594|593|592|591|590| 509|508|507|506|505|504|503|502|501|500|429| 428|427|426|425|424|423|422|421|420|389|388| 387|386|385|384|383|382|381|380|379|378|377| 376|375|374|373|372|371|370|359|358|357|356| 355|354|353|352|351|350|299|298|297|296|295| 294|293|292|291|290|289|288|287|286|285|284| 283|282|281|280|269|268|267|266|265|264|263| 262|261|260|259|258|257|256|255|254|253|252| 251|250|249|248|247|246|245|244|243|242|241| 240|239|238|237|236|235|234|233|232|231|230| 229|228|227|226|225|224|223|222|221|220|219| 218|217|216|215|214|213|212|211|210|98|95|94| 93|92|91|90|86|84|82|81|66|65|64|63|62|61|60| 58|57|56|55|54|53|52|51|49|48|47|46|45|44|43| 41|40|39|36|34|33|32|31|30|27|20|7|1)[0-9]$ (i) allows for valid international prefixes (ii) followed by 9 or 10 digits, with any type or placing of delimeters (except between the last two digits) This will match: 1-234-567-8901 61-234-567-89-01 46-234 5678901 1 (234) 56 89 901 1 (234) 56-89 901 46.234.567.8901 1/234/567/8901 /(\ |00)(297|93|244|1264|358|355|376|971|54|374|1684|1268|61|43|994|257|32|229|226|880|359|973|1242|387|590|375|501|1441|591|55|1246|673|975|267|236|1|61|41|56|86|225|237|243|242|682|57|269|238|506|53|5999|61|1345|357|420|49|253|1767|45|1809|1829|1849|213|593|20|291|212|34|372|251|358|679|500|33|298|691|241|44|995|44|233|350|224|590|220|245|240|30|1473|299|502|594|1671|592|852|504|385|509|36|62|44|91|246|353|98|964|354|972|39|1876|44|962|81|76|77|254|996|855|686|1869|82|383|965|856|961|231|218|1758|423|94|266|370|352|371|853|590|212|377|373|261|960|52|692|389|223|356|95|382|976|1670|258|222|1664|596|230|265|60|262|264|687|227|672|234|505|683|31|47|977|674|64|968|92|507|64|51|63|680|675|48|1787|1939|850|351|595|970|689|974|262|40|7|250|966|249|221|65|500|4779|677|232|503|378|252|508|381|211|239|597|421|386|46|268|1721|248|963|1649|235|228|66|992|690|993|670|676|1868|216|90|688|886|255|256|380|598|1|998|3906698|379|1784|58|1284|1340|84|678|681|685|967|27|260|263)(9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)\d$/ There's obviously a multitude of ways to do this, as evidenced by all of the different answers given thus far, but I'll throw my $0.02 worth in here and provide the regex below, which is a bit more terse than nearly all of the above, but more thorough than most as well.

]].02 worth in here and provide the regex below, which is a bit more terse than nearly all of the above, but more thorough than most as well.

Leave a Reply