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.

Reply via email to