【发布时间】:2011-02-25 19:29:15
【问题描述】:
如何在 ASP.NET 中使用 JavaScript 验证电话号码?
【问题讨论】:
标签: javascript asp.net validation
如何在 ASP.NET 中使用 JavaScript 验证电话号码?
【问题讨论】:
标签: javascript asp.net validation
验证电话号码是个难题。
本质上,您定义了一个与有效电话号码的模式匹配的正则表达式。电话号码的约定是高度本地化的,在不了解用户位置的情况下,很难一概而论。我的一般规则是“获取用户给你的东西,去掉除数字之外的所有内容并只存储它,格式化它以供显示。即使这样也并不总是很好,因为有人可能会给你一个完全有效的数字,比如555-1234 x345 , 因为它们只能通过 PBX 分机到达。他们省略了区号,如果去掉非数字,你会得到 5551234345,它会被格式化为 555-123-4335。不是那么有用。
NANP (North American Numbering Plan) 电话号码有一个 3 位数的区号(可选)、一个 3 位数的中心局(CO/交换)号码和一个 4 位数的用户号码,以及可选的国家代码,访问代码等。通常写为(不同地,省略国家代码和访问代码):(AAA)BBB-CCCC、AAA-BBB-CCCC、AAA.BBB.CCCC 等。更正式地,NANP 编号(Zone 1,包括美国及其海外领土、加拿大和大多数加勒比国家)应写为+1:AAA-BBB-CCCC。
French Numbering Plan 目前有 10 位电话号码,写作 xx.xx.xx.xx.xx。它曾经有 8 位数字,法兰西岛(巴黎地铁)有特殊规则。更正式地说,法国号码应该写成 +33:xx.xx.xx.xx.xx,除了如果从法国以外的地方拨打,电话号码中的前导“0”应该省略,所以从外部的角度来看,电话号码应表示为 +33:x.xx.xx.xx.xx。
其他国家和拨号/号码计划有自己的规则。有时,在特定国家/地区的特定地点拨打电话和从特定地点拨打电话的地方有特殊规定(例如,过去从巴黎拨打法兰西岛以外的号码需要先拨打“16”前缀。)美国,一些地方,即使是本地电话也需要拨打所有 10 位数字。
更多信息(和链接)在World Telephone Numbering Guide
【讨论】:
function validatePhoneNumber(elementValue){
var phoneNumberPattern = /^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$/;
return phoneNumberPattern.test(elementValue);
}
像这样使用它:
if (validatePhoneNumber('123-456-7890'))
{
// do something
}
【讨论】: