是否有用于电话号码验证的正则表达式?



我正在建立一个新网站,并希望验证用户输入的电话号码。我需要使用什么正则表达式来获取格式 04xx xxx xxx?第五个字符和第九个字符之间需要有一个空格。

我尝试使用这个表达式:^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-s./0-9]*$.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations;
namespace InspiringMagazines.Models
{
public class Customer
{
public int customerID { get; set; }
[Display(Name = "GivenName")]
[MinLength(2), StringLength(20), Required(ErrorMessage =                                                         
@"The Given Name is required.")]
[RegularExpression(@"[0-9][a-z'-]{3,20}")]
public string firstName { get; set; }
[Display(Name = "FamilyName")]
[MinLength(2), StringLength(20), Required(ErrorMessage =         
@"The Family Name is required.")]
[RegularExpression(@"[0-9][a-z'-]{3,20}")]
public string lastName { get; set; }
[Display(Name = "Date of Birth")]
public string dateOfBirth { get; set; }
public string emailAddress { get; set; }
[MinLength(12), StringLength(12), Required(ErrorMessage =         
@"The Phone Number is required.")]
public string mobileNumber { get; set; }
public string postalCode { get; set; }
}
}

预期结果是电话号码不是 04xx xxx xxx 格式以显示错误消息。现在的实际结果是所有数字都被接受。

就理解而言,最简单的正则表达式是:

^04dd ddd ddd$

但请注意,这可能也会让他们输入 ascii 范围之外的 Unicode 数字

。老实说,过度验证对用户来说比对你的帮助更令人恼火,尤其是当你的错误消息如此糟糕时。对输入有一些复杂的要求,然后只告诉他们"需要给定的名字"是不好的。如果他们的名字真的是"Q"怎么办?你不会说"名字必须至少是两个字符"(更好的错误消息(,但我的问题是"为什么名字必须至少是两个字符?如果一个人把一个角色作为他们的名字,你会在乎什么?

同样 电话号码 ,让他们输入他们喜欢的任何内容,任何旧方法。删除他们在验证时输入的所有废话,并检查他们输入了以 10 开头的 04 位数字。错误消息应显示"电话号码应以 04 开头,总共有 10 位数字"。用 04 预填充盒子以帮助他们,并在他们给你的东西上运行它:

Regex.Replace(theirInput, "[^0-9]", "");

它去掉所有的连字符,括号,空格等。 检查结果的长度。这里的消息是:"不要要求你的用户输入空格,因为空格真的无关紧要。您可以将(0400) 223-456的用户输入剥离为数字0400223456后,将它们自己放入代码中,只需使用字符串子字符串即可

"容忍你接受的东西,严格要求你发送的东西"是编写使用HTTP的服务器的口头禅,但应用于任何用户输入都是一件好事;始终致力于从用户那里获取尽可能多的垃圾输入并清理它以满足您的标准,而不是强迫用户满足它,如果您强迫用户,请务必告诉他们他们到底出了什么问题。旨在立即反馈验证 - 不要让他们提交整个表单然后拒绝它并将它们发送回缺少其复杂双密码字段值的表单并让他们重做验证码,或者更糟的是,清除所有无效输入

我尝试过这个正则表达式

^(04d{2}sd{3}sd{3})$

在正则表达式上进行测试

对于尼日利亚电话号码,以下正则表达式模式适用于[0]([7-9][0]|[8][0-1])[0-9]{8}。只需将其粘贴到您的正则表达式匹配项中即可

尼日利亚电话号码的正则表达式

无间距

/^234[0-9]{10}$/

带间距

/^234s[0-9]{10}$/

最新更新