Thanks for the reply and information.
The jQuery validation routines for GB telephone numbers contain significant errors and shortcomings. I already posted some patches correcting many of those problems at least a month ago, but they haven't been reviewed yet. The new Python/django telephone number validation code I am proposing here is far more comprehensive and has much more detailed range and length checking. Similar code already works fine in PHP and Java elsewhere, but I am having trouble converting it all to Python. I have added some Python logic and code to the initial RegEx patterns that I posted yesterday, but I now need help to finish it off and get it working. I am not at all familiar with the Python syntax and the manual is somewhat terse and obtuse. I had a problem with GitHub this morning, so the pull request is now at https://github.com/django/django/pull/324 The code so far, can be found at: https://github.com/g1smd/django/blob/master/django/contrib/localflavor/gb/forms.py I'm guessing that someone proficient in Python could finish it off in a couple of hours or less. Any volunteers? On Wednesday, September 5, 2012 7:02:09 AM UTC, Amyth wrote: > > you can alternatively use jquery to validate the field, i do not have the > link handy as m on my phone right now but google validation engine, it is > one of the most powerful jquery validation library which also has builtin > method of validating uk phone numbers. > On Sep 4, 2012 5:00 AM, "g1smd.1" <g1smd...@gmail.com <javascript:>> > wrote: > >> I see that there are routines for validating telephone numbers in forms >> in Django for several countries. >> >> The code for that can usually be found in the forms.py file located in >> the various country folders here: >> https://github.com/django/django/tree/master/django/contrib/localflavor >> >> So far, there is nothing for GB numbers, here: >> https://github.com/django/django/tree/master/django/contrib/localflavor/gb >> >> I've written a bunch of RegEx patterns to get this functionality started. >> The patterns are 100% fully tested. All that's needed is a few lines of >> python logic to string them together. The details can be found at: >> https://github.com/django/django/pull/316/files >> >> My python foo is almost zero. Anyone care to have a go at getting this to >> work? >> >> RegEx 1 checks the user entered something that looks like a GB telephone >> number: >> 020 3000 5555 >> 02075 567 234 >> 0114 223 4567 >> 01145 345 567 >> +44 1213 456 789 >> 00 44 (0) 1697 73555 >> 011 44 11 4890 2345 >> and several other formats, without worrying if the format is correct for >> this particular number (but read on). It allows for national or >> international format, even for two common international dial prefixes. What >> is most important is that the user enters the right number of digits. Don't >> constrain the user to use a particular format for entry. >> "Be lenient in what you accept, be strict in what you send." (Postel's >> Law) >> >> RegEx 2 extracts the NSN part of the number in $3, with "44" or NULL in >> $2 (so you know if international or national format was used on input), and >> any extension in $4. Store $2 and $4 for later. Send $3 on to RegEx 3. >> >> RegEx 3 tests the NSN part of the number is in a valid range and has the >> right number of digits for that range (GB numbers can be 9 or 10 digits >> long). This RegEx pattern is very detailed. You can say that a number is >> possible or is invalid with this RegEx. >> >> RegEx Group 4. Here, there's a bunch of RegEx patterns that specify how a >> GB number should be formatted, detailed by number length and initial >> digits. These rules cover all GB numbers. >> >> The last bit is to add the 0 or +44 back on, and append the original >> extension number (if present) and present it back to the user. >> >> 020 3000 5555 => Valid: 020 3000 5555 >> 02075 567 234 => Valid: 020 7556 7234 >> 0114 223 4567 => Valid: 0114 223 4567 >> 01145 345 567 => Valid: 0114 534 5567 >> +44 1213 456 789 => Valid: +44 121 345 6789 >> 00 44 (0) 1697 73555 => Valid: +44 16977 3555 >> 011 44 11 4890 2345 => Valid: +44 114 890 2345 >> 0623 111 3456 => NOT VALID >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Django users" group. >> To view this discussion on the web visit >> https://groups.google.com/d/msg/django-users/-/h0iG7nJrXikJ. >> To post to this group, send email to django...@googlegroups.com<javascript:> >> . >> To unsubscribe from this group, send email to >> django-users...@googlegroups.com <javascript:>. >> For more options, visit this group at >> http://groups.google.com/group/django-users?hl=en. >> > -- You received this message because you are subscribed to the Google Groups "Django users" group. To view this discussion on the web visit https://groups.google.com/d/msg/django-users/-/Zohb6P8AsaIJ. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.