Re: Telephone number type

A few random thoughts:

When giving a little bit of thought on phone numbers in the past, I was
tempted to separate input and output completely:

- Input would ignore pretty much anything besides digits (except maybe for
the "+" sign).
- Output would format the number according to a particular country's (or
form author's) expectations, if the input is valid.

We had a requirement, not implemented yet, to handle specifically UK phone
formats, and this is pretty complicated if you want to validate the number
of digits more strictly. Some pointers here:

    https://github.com/orbeon/orbeon-forms/issues/3248

I realize that maybe a phone number type wouldn't have to validate the
number of digits as a first approximation.

-Erik


On Tue, Sep 12, 2017 at 11:38 AM, C. M. Sperberg-McQueen <
cmsmcq@blackmesatech.com> wrote:

> On Sep 12, 2017, at 3:43 AM, Steven Pemberton <Steven.Pemberton@cwi.nl>
> wrote:
>
> > While we're at it, since it is a regularly occurring field in forms,
> > how about adding a telephone number type?
>
> > I went looking for suitable standards to reference, and I found
> > this:
>
> >       E.123 : Notation for national and international telephone
> >       numbers, e-mail addresses and web addresses
> >       http://www.itu.int/rec/T-REC-E.123-200102-I/en
>
> > This is actually about how to represent telephone numbers on printed
> > materials, but seems usable.
>
> > It doesn't give a formal syntax, only examples and descriptions,
> > from which I extract the following syntax:
>
> >  telephone: international | local.
> >  international: "+" digits+
> >  local: prefix? digits+
> >  prefix: "(" digits+ ")"
> >  digits: digit (spacing digit)?
> >  digit: ["0"-"9"]
> >  spacing: " " | "-"
>
> > However, looking at
> > ttps://en.wikipedia.org/wiki/National_conventions_for_
> writing_telephone_numbers
> > some countries seem to expect to be able to bracket the area code
> > even in an international number,
>
> In some business cards in my collection, parentheses are used not
> around an area code but around the country code, sometimes with the
> leading "+" inside the parentheses.  A card (from someone in the EU
> bureaucracy — which I expect means the pattern is not idiosyncratic to
> one individual has:
>
>   (+352) 999 99-99999
>
> Here and elsewhere 9s replace some digits, in the interests of data
> privacy.
>
> Other examples of this pattern (i.e. "(" "+"? country-code ")")
> include numbers in the Czech Republic and (with no plus sign) Canada.
>
>   (+420) 999 999 999
>   (1) 905 999 9999
>
> Sometimes parentheses are used around a part of the number used in
> some cases but not in others.  In all the cases I remember seeing,
> it’s a zero between the country code and the in-country number; the
> parentheses appear to mean “when calling internationally, omit the
> zero, and when calling within the country omit the country code and
> include the zero”.  E.g.
>
>    +44 (0) 9999 999999
>
> I think I have seen this most often in German phone numbers, but the
> examples in my collection of business cards include ones from the UK,
> the Netherlands, and Sweden, as well (and most of my German cards
> don't use this pattern, which tells me something but I'm not sure what).
>
> > so we should be a bit laxer; for instance:
>
> >  telephone: prefix? area? digits+
> >  prefix: "+" digits+
> >  area: "(" digits+ ")"
> >  digits: digit (spacing digit)?
> >  digit: ["0"-"9"]
> >  spacing: " "+ | "-"
>
> > I think this regexp covers it:
>
> >       "+"? digs+ ("(" digs+ ")" digs+)?
>
> > where:
>
> >       digs: [0-9] ("-" [0-9])?
>
> > and after every terminal there may follow spaces.
>
> My collection of business cards includes examples with the following
> characters used as separators in addition to parentheses, blank, and
> ‘-‘:
>
>   . (i.e. full stop)
>   &#183; (i.e. mid-dot)
>   /
>   “  “ (i.e. two blanks, or extra-wide blank)
>   |
>
> I don’t know how important it might be to support such variations.  As
> far as I know, they have no well established meaning, although in my
> examples / is used only (without white space) between the area code
> and the local number and | is sometimes used only (with white space on
> either side) between the country code and the in-country number (and
> in other cases as the sole separator character)
>
> > That produces this monstrosity:
>
> > <pattern value="^\ *\+?([0-9]\ *(\-\ *[0-9]\ *)?)+(\(([0-9]\ *(\-\
> *[0-9]\ *)?)+\)\ *([0-9]\ *(\-\ *[0-9]\ *)?)+)?\ *$"/>
>
> > which you can try out here (scroll to the bottom):
>
>  http://homepages.cwi.nl/~steven/forms/tests/email.xml
>
> > Let me know if you find cases that don't work.
>
> In addition to the examples given above (some of which work and others
> of which don't), some cards in my collection have numbers with the
> patterns:
>
>   800,999.9999 x349
>   (1) 905 999 9999 x99999
>
> If extensions are part of a number, these need to work; if not, not.
>
> Also: it appears to be a consequence of the regex that any two hyphens
> must be separated by at least two decimal digits.  So the following
> Czech number attested in my collection is legal (it appears that '2'
> is one of the area codes for Prague)
>
>   +420 (2) 9999 9999
>
> and so is a number with just blanks:
>
>   +420 2 9999 9999
>
> but the following variant is not legal:
>
>   +420-2-9999-9999
>
> I have not seen anything with that last illegal pattern in my
> collection, but the other examples in the collection do provide plenty
> of examples of (1) separators before and after area codes, (2) use of
> whitespace as the only separator, and (3) use of hyphen as the only
> separator.  So I am inclined to think it might appear in Real Life.
>
> Do any telephone systems in the world still use lettered exchanges?
> The first telephone number I learned as a child began not "366" but
> "EM-6" or "Emerson 6".  If that convention is still in use anywhere,
> letters will be needed to represent it.
>
> And of course many commercial organizations use numbers that spell out
> words; the phone-in number for the quiz show "Whad'Ya Know" (now
> defunct), which ran on public radio stations in the U.S. for thirty
> years, was 1-800-WHA-KNOW.  Do such numbers need to be supported?
>
> To try to boil it down, the following number patterns are not
> supported by the regex given; whether they should be is in each case a
> policy question:
>
>   a  (+352) 999 99-99999
>   b  999.999.9999
>   c  0711/9999-999
>   d  613  999-9999 (two blanks or one-em space after area code)
>   e +33 | 99 99 99 99
>   f  800,999.9999 x349
>   g  (1) 905 999 9999 x99999
>   h  +420-2-9999-9999
>   i  EM6-9999
>   j  1-800-WHA-KNOW
>
> The following number patterns are supported (but use parentheses to
> enclose something other than an area code)
>
>   z  (1) 905 999 9999
>   y  +44 (0) 9999 999999
>
> Pattern h seems plausible but is not attested in the collection of
> business cards
> I examined; patterns i and j are not attested but specifications of
> phone numbers in this form are reasonably well attested (though for
> pattern i all the attestations may be decades old by now).
>
> I thank you for an entertaining couple of hours.  (The project leader
> to whom I will explain in 45 minutes that I got nothing done on that
> project this morning because I was thinking about telephone numbers
> may however be less inclined to thank you.  Oh, well.)
>
> ********************************************
> C. M. Sperberg-McQueen
> Black Mesa Technologies LLC
> cmsmcq@blackmesatech.com
> http://www.blackmesatech.com
> ********************************************
>
>
>
>

Received on Wednesday, 13 September 2017 05:02:23 UTC