| | 1 | {{{ |
| | 2 | #!rule |
| | 3 | meta |
| | 4 | { |
| | 5 | title: "Ukrainian phone numbers"; |
| | 6 | version: "0.[[revision]]_[[date]]"; |
| | 7 | description: "Verify Ukrainian phone numbers formating and validity. Rules for checking phone number formats of Ukraine. The phone must conform to the format +380 aa xxx xxxxx; +380 aaa xx xxxxx; +380 аааа хх ххх, where +380 is the code of Ukraine, аа / ааа / аааа is the code of the operator or area, 'ххх хххх' / 'хх хххх' / 'хх ххх' - number format for seven-, six- and five-digit numbers that can be used in the local network without using the network code. Toll-free phones '0 800 ххх ххх' must be specified without a country code, the `phone: UA` key is used to record them."; |
| | 8 | author: "andygol"; |
| | 9 | link: "https://josm.openstreetmap.de/wiki/Rules/UkrainePhoneNumbers"; |
| | 10 | min-josm-version: "11424"; |
| | 11 | baselanguage: "en"; |
| | 12 | } |
| | 13 | meta[lang=uk] { |
| | 14 | title: "Правила перевірки форматів телефоних номерів в Україні"; |
| | 15 | description: "Правила перевірки форматів номерів телефонів України. Телефон має відповідати формату +380 аа ххх хххх; +380 ааа хх хххх; +380 аааа хх ххх. де +380 - код України, аа/ааа/аааа - код оператора чи території, ххх хххх/хх хххх/хх ххх - формат номерів для семи-, шести- та п'ятизначних номерів, що можуть використовуватись в місцевій мережі без використання коду мережі. Телефони 0 800 ххх ххх мають вказуватись без коду країни, для їх запису використовується ключ `phone:UA`"; |
| | 16 | } |
| | 17 | |
| | 18 | *[number_of_tags() > 1][/^(contact:)?(phone|fax)(?!:UA)$/!~/^((?=\+\b380[0-9 ]{12}\b)(?=.*(\+\b380 (?:\d{2} \d{3} \d{4}|\d{3} \d{2} \d{4}|\d{4} \d{2} \d{3})\b))((\+\b380 (?:\d{2} \d{3} \d{4}|\d{3} \d{2} \d{4}|\d{4} \d{2} \d{3})\b));?)*$/][inside("UA")] { |
| | 19 | throwWarning: tr("\"phone\" tag"); |
| | 20 | group: tr("Incorrect phone number"); |
| | 21 | suggestAlternative: tr("format +380⎵44⎵123⎵4567;+380⎵352⎵12⎵3456;+380⎵5345⎵12⎵345"); |
| | 22 | assertMatch: "node phone=+380 44 366 7002"; |
| | 23 | assertNoMatch: "node phone=+38 044 366 7002"; |
| | 24 | } |
| | 25 | |
| | 26 | *[number_of_tags() > 1][/^phone$/=~/^((0 800 \d{3} \d{3});?)*$/][inside("UA")] { |
| | 27 | throwError: tr("\"phone\" tag"); |
| | 28 | group: tr("Use \"phone:UA\" key for toll free phones instead"); |
| | 29 | fixChangeKey: "phone=>phone:UA"; |
| | 30 | assertMatch: "node phone=0 800 500 609"; |
| | 31 | assertMatch: "way phone=0 800 500 609"; |
| | 32 | assertNoMatch: "node phone:UA=0 800 500 609"; |
| | 33 | assertNoMatch: "way phone:UA=0 800 500 609"; |
| | 34 | } |
| | 35 | }}} |