c# - 验证电话号码以允许 () 和空格,但我使用的正则表达式不允许输入这些。

标签 c# asp.net regex validation

  string Phno=txt_EditPhno.Text;
        bool check = false;
        Regex regexObj = new Regex(@"^(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$");
        if ((String.IsNullOrEmpty(Phno))||(regexObj.IsMatch(Phno)))
        {}

我正在使用这个正则表达式来允许电话号码允许,空格,-,() 但是它不允许上面提到的任何符号,这是我使用的正则表达式错误还是我在做错误的方式

最佳答案

您列出的 RegEx 字符串工作正常:

System.Text.RegularExpressions.Regex regexObj = new System.Text.RegularExpressions.Regex(@"^(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$");
regexObj.IsMatch("(555)-867-5309")
true
regexObj.IsMatch("+15558675309")
true
regexObj.IsMatch("+1.555.867.5309")
true
regexObj.IsMatch("+15558675309ext12345")
true
regexObj.IsMatch("+15558675309x12345")
true

您的代码中的错误必须在其他地方。您始终可以使用 RegExLib.com 之类的工具测试您的 RegEx。

关于c# - 验证电话号码以允许 () 和空格,但我使用的正则表达式不允许输入这些。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8049932/

相关文章:

c# - 一个父类需要知道他的子类

c# - LINQ 查找大于/小于输入的最接近数字

c# - 使用 UTC 日期时间请求 GET 到 ASP.NET Web API

javascript - 如何对多个控件使用自定义验证器?

c - 检测模式末尾的字符串

c# - 从 AspNetCore TestHost 运行时编译 Razor 期间出现 CompilationFailedException

c# - 在 Blazor 客户端中放置配置文件的位置

asp.net - 如何在MVC应用上设置默认页面?

regex - 重新排列一个字符串

regex - 如何在正则表达式模式中包含变量