gpt4 book ai didi

javascript - 如何验证 Angular 国家/地区的手机号码?

转载 作者:行者123 更新时间:2023-11-28 17:13:39 24 4
gpt4 key购买 nike

在这里,我使用以下代码验证手机号码,对于所有使用以下代码的国家/地区,使用此正则表达式 (/^(\+\d{1,3}[- ]?)?\d{10}$/)我这样做,但它不接受这种类型的数字((+91)9876543210 OR 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");
}
}

最佳答案

您需要在正则表达式中加入文字括号,这些括号可以选择性地存在,因为它们具有特殊含义,因此您需要在正则表达式中转义它们。

查看您的最后一个手机号码09876543210,如果没有国家/地区代码,您似乎可以选择在数字前支持零,这样您就可以在国家/地区代码部分中使用零交替。

最后,就像您不想支持仅包含全零的数字一样,您可以在正则表达式中进行否定前瞻 (?!0+$) 。您更新后的正则表达式将变为,

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

<强> Live Demo

此外,如果您不想支持只有相同数字的数字,例如 22222222225555555555,那么您的否定前瞻需要写为 (?!(\d)\1+$) 并且你的正则表达式将变成,

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

<强> Demo for this updated regex

验证手机号码的另一种方法是,您替换所有非数字的内容,并删除号码中的所有前导零,然后剩下的将是纯手机号码,您可以进一步验证。但那里可能存在某些缺点,因为可能会变得有点难以弄清楚国家/地区代码以及该号码是否确实有效。因为某些号码可能少于十位数字,实际上可能无效,但如果它们属于像新加坡这样的国家(我猜有 8 位数字),它们可能是有效的。与具有十一位本地号码的国家/地区一样,可能会给您带来麻烦。

关于javascript - 如何验证 Angular 国家/地区的手机号码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53940195/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com