2012-06-22 3 views
1

Я собрал эту небольшую формулу регулярных выражений, которая проверяет номера, чтобы убедиться, что они правильные Australian mobile number. Проблема, которую я испытываю, заключается в том, что новый номер Telstra не соответствует стандарту, поэтому он вызывает ошибки.Regex для подтверждения австралийских мобильных номеров

Количество форматов, которые он принимает в

0421813629, 0430091460, и т.д. ...

, хотя, когда мы используем, который имеет 3 цифры 5 или выше, это, кажется, выдаст ошибку, и Telstras новый номера имеют 7 в этом 3 значного месте

/^(?:\+?61|0)4 ?(?:(?:[01] ?[0-9]|2 ?[0-57-9]|3 ?[1-9]|4 ?[7-9]|5 ?[018]) ?[0-9]|3 ?0 ?[0-5])(?: ?[0-9]){5}$/ 

Я считаю, что ошибка имеет что-то делать с [0-57-9] |? 3

+1

Было бы неплохо, если бы вы могли сообщить нам, какой формат австралийских телефонных номеров. – m0skit0

+0

@ m0skit0 Я привел несколько примеров, есть 10 цифр, всегда начиная с 04 ******** –

+0

И в чем вопрос? что вам нужна одна формула регулярных выражений? это не сработает, потому что вы не будете знать, имеет ли его плохой номер или просто номер telstra – Limey

ответ

2

Я просто переписываю все это для вас. Регулярное выражение будет компилироваться, но мне еще предстоит проверить все. Регулярное выражение будет работать только с строкой, очищенной от пробелов (так как пробелы могут быть произвольными и не изменять значение номера телефона). Регулярное выражение основано на статье в Википедии. Удачи, если есть какая-либо ошибка, а также удачи, поддерживая это, если они решат выделить запасной блок. Я написал регулярное выражение, объединив в себе блоки из 10^7, 10^6, 10^5 и 10^4 чисел, которые используются.

/^(?:\+?61|0)4(?:[01]\d{3}|(?:2[1-9]|3[0-57-9]|4[7-9]|5[0-15-9]|6[679]|7[3-8]|8[1478]|9[07-9])\d{2}|(?:20[2-9]|444|52[0-6]|68[3-9]|70[0-7]|79[01]|820|890|91[0-4])\d|(?:200[0-3]|201[01]|8984))\d{4}$/ 

Если вы хотите, чтобы сделать регулярное выражение обслуживаемым, вы должны написать отдельную струны для каждого из телефонной компании, то конкатенации строк и вызвать RegExp конструктор для создания регулярных выражений из строки. Может быть, немного менее эффективно, но вы будете поддерживать свою работоспособность при ее поддержании.

+0

это, похоже, устранило проблему с хлопотными номерами, которые мы имели в наших данных. спасибо –

+0

Как бы вы применили вышеуказанный RegEx в Javascript в ASP.net, пожалуйста? – Fandango68

+0

@ Fernando68: Само регулярное выражение подходит для многих вкусов. Однако я не знаю контекста, который вы собираетесь использовать, чтобы дать какое-либо дальнейшее предложение. Я предлагаю вам ознакомиться с документацией на примерах. – nhahtdh

Смежные вопросы