UK номера НЕ 11 цифр.Они состоят из 9 или 10 цифр, не включая код магистрали 0 или +44
префикс страны.
Правила несколько сложны, но могут быть определены в нескольких шаблонах RegEx.
Первым шагом должно быть снятие префикса +44
, 00 44
, 011 44
, +44 (0)
, 00 44 (0)
, 011 44 (0)
или 0
перед исследованием остальной части числа.
Pattern: ^(\(?(?:0(?:0|11)\)?[\s-]?\(?|\+)(44)\)?[\s-]?)?\(?0?(?:\)[\s-]?)?([1-9]\d{1,4}\)?[\d\s-]+)((?:x|ext\.?|\#)\d{3,4})?$
Используйте вышеприведенный шаблон для извлечения 44
из $2
, чтобы узнать, что использовался международный формат, в противном случае примите национальный формат, если $2
равен нулю.
Извлеките дополнительные сведения о добавочном номереиз $4
и сохраните их для последующего использования.
Извлеките NSN (включая пробелы, дефисы и скобки) из $3
.Удалите эти пробелы, дефисы и скобки и используйте шаблон RegEx ниже для проверки длины и начальных цифр.
Pattern: ^((1[1-9]|2[03489]|3[0347]|5[56]|7[04-9]|8[047]|9[018])\d{8}|(1[2-9]\d|[58]00)\d{6}|8(001111|45464\d))$
Гораздо более подробные шаблоны доступны в других местах, вплоть до отдельных кодов города.