【问题标题】:Phone number validation using JavaScript with .NET?使用带有 .NET 的 JavaScript 进行电话号码验证?
【发布时间】:2011-02-25 19:29:15
【问题描述】:

如何在 ASP.NET 中使用 JavaScript 验证电话号码?

【问题讨论】:

    标签: javascript asp.net validation


    【解决方案1】:

    验证电话号码是个难题。

    本质上,您定义了一个与有效电话号码的模式匹配的正则表达式。电话号码的约定是高度本地化的,在不了解用户位置的情况下,很难一概而论。我的一般规则是“获取用户给你的东西,去掉除数字之外的所有内容并只存储它,格式化它以供显示。即使这样也并不总是很好,因为有人可能会给你一个完全有效的数字,比如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

    【讨论】:

      【解决方案2】:
      function validatePhoneNumber(elementValue){  
          var phoneNumberPattern = /^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$/;  
          return phoneNumberPattern.test(elementValue);  
      }
      

      像这样使用它:

      if (validatePhoneNumber('123-456-7890'))
      {
          // do something
      }
      

      【讨论】:

        猜你喜欢
        • 2014-11-30
        • 2011-05-19
        • 2013-08-24
        • 1970-01-01
        • 1970-01-01
        • 2011-09-05
        相关资源
        最近更新 更多