Как проверить номер мобильного телефона для стран в угловых? - PullRequest
0 голосов
/ 27 декабря 2018

Здесь я проверяю номер мобильного телефона, используя приведенный ниже код, для всех стран, использующих код ниже, используя это регулярное выражение (/^(\+\d{1,3}[- ]?)?\d{10}$/) Я делаю, но не принимаю номера этого типа ((+91)9876543210 ИЛИ 09876543210)

Этот тип мобильных номеров принимает

+91 9876543210 (or all other country code)

(+91) 9876543210

(+91)9876543210

+919876543210

+91-9876543210

(+91)-9876543210

9876543210

09876543210

не принимает такие номера, как

++91 9876543210(double ++),

+91  9876543210(double spaces),

+91 987 65   7 4 688(not more than one space),

+91 808-75-74-678(not more than one -),

+91-846363,

80873(number less than 10 digit),

8087339090456(number greater than 10 digit),

0000000000(all zeros),

+91 0000000(all zeros with country code)

HTML

<mat-form-field>
  <input matInput placeholder="Enter contact No." [(ngModel)]="userObj.contactno" name="contactNo" required>
</mat-form-field>
<button mat-button color="primary" (click)="saveNewCustomerDetails()">SAVE</button>

TS

   saveNewCustomerDetails(){
     if(this.userObj.contactno.match(/^(\+\d{1,3}[- ]?)?\d{10}$/)){
        console.log("valid mobile number");
     }else{
        console.log("Invalid mobile number");
     }
   }

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

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

Видя ваш последний номер мобильного телефона 09876543210, кажетсяВы можете по желанию поддерживать ноль перед числом, если нет кода страны, поэтому вы можете иметь чередование нуля для вашей части кода страны.

И, наконец, вы не хотите поддерживать только число свсе нули, вы можете иметь отрицательный взгляд вперед (?!0+$) в вашем регулярном выражении.Ваше обновленное регулярное выражение становится,

^(?!0+$)(?:\(?\+\d{1,3}\)?[- ]?|0)?\d{10}$

Live Demo

Кроме того, вы, если вы не хотите поддерживать номера, имеющие только те же цифрыкак 2222222222 или 5555555555, тогда ваш отрицательный взгляд вперед должен быть записан как (?!(\d)\1+$), и ваше регулярное выражение станет,

^(?!(\d)\1+$)(?:\(?\+\d{1,3}\)?[- ]?|0)?\d{10}$

Демо для этого обновленного регулярного выражения

Другим способом проверки мобильных номеров может быть то, что вы заменяете все, что не является цифрой, а также избавляетесь от всех начальных нулей в вашем номере, тогда то, что остается, будет чистым номером мобильного телефона, который вы можете использовать в дальнейшем.проверки.Но там могут быть определенные недостатки, так как это может стать немного сложным для определения кода страны и если номер действительно действителен.Потому что некоторые цифры могут быть менее десяти цифр и могут быть недействительными, но они могут быть действительными, если они принадлежат такой стране, как Сингапур, где, как мне кажется, 8 цифр.И то же самое со странами, имеющими одиннадцать цифр, местный номер может вас беспокоить.

0 голосов
/ 27 декабря 2018

Ваш шаблон выглядит правильно, не знаю, почему он отклоняет, вы можете попробовать один раз с

^(\+[\d]{1,5}|0)?[7-9]\d{9}$

Возможно, он будет работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...