logi sisse meist KKK

Kuidas valideerida ja tekstist leida telefoni numbrit ning see ära normaliseerida?

Üldist lahendust ei ole leidnud. Nodejs-i phone teek Eesti numbritega väga hästi ringi ei käi.

Oleks hea teada/näha, mida kasutatakse (mistahes keeles). Veel parem kui oleks olemas mingi laiem lahendus, mis toimiks ka teiste riikide numbritega.

Teen ise algust ja postitan postgresql-i funktsiooni, mida olen kasutanud AINULT mobiili numbrite jaoks (SMS saatmine).

Näide tulemustest

select
   gsm('+372 5735735') as a,
   gsm('37255655325') as b,
   gsm('vanaema: 58-43-44232') as c,
   gsm('55 652 4323, 56234226') as d,
   gsm('43332145') as e;

     a       |      b      |      c       |      d       |  e
-------------+-------------+--------------+--------------+-----
 37255655325 | 37255655325 | 372584344232 | 372556524323 |

Funktsioon ise:

CREATE OR REPLACE FUNCTION gsm(varchar) RETURNS varchar AS $$
SELECT replace(replace(
    CASE WHEN (nr ~ '^\+?372') THEN replace(nr, '+', '')
         ELSE '372' || nr
    END
    ,'-', ''), ' ', '')
FROM regexp_split_to_table($1, '\s*[^0-9+() -]+\s*') AS nr
WHERE nr IS NOT NULL
  AND (   (nr ~ '^(\+?372)?\s*5[0-9 -]*$')  --  et
--      OR nr SIMILAR TO E'\s*(?:\\+?371)'  -- lv
--      OR nr SIMILAR TO E'\s*(?:\\+?358)'  -- fi
)
-- suht juhuslik vahemik on 5 kuni 18
AND length( regexp_replace(nr, '[^0-9]', '') ) BETWEEN 5 AND 18
LIMIT 1;
$$ LANGUAGE sql IMMUTABLE STRICT;

küsitud Jul 03 at 15:45

Kaiko%20Kaur's gravatar image

Kaiko Kaur
2306711

edited Jul 03 at 15:46


Ega siin väga paremat lahendust ei olegi. Matchide leidmiseks kasutaks ise \+?(([0-9]+|\([0-9]+\))([ \-][0-9]+|\([0-9]+\))*).

function extractPhoneNumbers(s) {
    var matches = s.match(/\+?(([0-9]+|\([0-9]+\))([ \-][0-9]+|\([0-9]+\))*)/g);
    for(var i = 0; i < matches.length; i++) {
        matches[i] = matches[i].replace(/[ \-]/g, " ");
    }
    return matches;
}

Edasised arvamised ja laiendused pigem sõltuvad kontekstist.

link

vastatud Jul 04 at 11:27

egon's gravatar image

egon ♦♦
771239

edited Jul 04 at 12:18

Sinu vastus
lülita eelvaade

Jälgi seda küsimust

By Email:

Pärast sisselogimist saad tellida muudatuse teavitusi siit

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *kaldkiri* või __kaldkiri__
  • **paks kiri** või __paks kiri__
  • link:[tekst](http://url.com/ "pealkiri")
  • pilt?![alt tekst](/path/img.jpg "pealkiri")
  • nummerdatud nimekiri: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • põhilised HTML märgendid on samuti toetatud

Pinu tööpakkumised

kõik pakkumised »

Küsimuse sildid:

×2

küsitud: Jul 03 at 15:45

nähtud: 198 korda

viimati uuendatud: Jul 04 at 12:18

Sarnased küsimused

Litsents: Creative Commons Attribution License | Kontakt: info@pinu.ee