【问题标题】:regular expression for indian phone number印度电话号码的正则表达式
【发布时间】:2012-03-24 17:05:25
【问题描述】:

正在寻找印度电话号码的正则表达式

正则表达式应允许以下所有格式。

固定电话号码

0802404408
080-2404408
+91802404408
+91-802404408

手机号

8147708287
08147708287
+918147708287
+91-8147708287

谁能帮帮我,在此先感谢

我的代码是

[RegexValidator("[0-9 -]*"
, MessageTemplateResourceName = "INVALID_PHONE"
, MessageTemplateResourceType = typeof(ValidatioinErrors))]
public string Phone
{
        get { return phone; }
        set { phone = value; }
}

public bool IsValid()
    {
        return Validation.Validate<Class_name>(this).IsValid;
    }

    public ValidationResults ValResults
    {
        get
        {
            return Validation.Validate<Class_name>(this);
        }
    }

对于我刚才提到的这个验证事情

using Microsoft.Practices.EnterpriseLibrary.Validation;
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;

在我的命名空间中,在 UI 部分,表达式工作正常,但在上面的代码中,如果我将值设为 080-2404408,它会显示“无效的电话号码”

【问题讨论】:

  • 你试过什么? Stack Overflow 不是其他人为您工作的网站。此外,对于那些不熟悉印度数字的人,您需要进一步解释规则是什么。多少位数,具体需要多少位数。
  • 感谢 Phrogz,我尝试了数字格式的简单表达式为“[0-9 -]*”,似乎没有错误,但是当我在后面的代码中使用这个表达式时(在我的业务对象中) 如果我将值设置为“080-2404408”,则条件不满足并显示错误。但如果我在设计部分使用它,它工作正常,我在网络上尝试过,我发现只适用于固定电话格式或移动电话,但我需要同时允许它们,这就是我要问的......抱歉在这里打扰你.
  • @Shanish,您的正则表达式 [0-9 -]* 将匹配“080-2404408”。如果您因此遇到错误,则问题出在其他地方。你已经got this answer
  • @Stema 当然,问题仍然是错误,当我检查该问题线程时,显示问题已关闭,这就是我在这里再次提出的问题
  • @Shanish,这个问题没有结束,你只需要提供更多信息。正如我们已经澄清的那样,问题不在于正则表达式,因此请显示您使用正则表达式的代码以及它不工作的地方。

标签: c# regex phone-number


【解决方案1】:

对于以下 RegEx 工作提供的示例:

/^(?:\+91(?:-)?|0\d{2,4}-|0|)\d{7,10}$/

【讨论】:

  • 是时候让他知道了吗?
  • @shanish:您的问题标题是检查印度电话号码,您接受的答案也将允许+44+92 国家代码。
【解决方案2】:

你可以试试

^\+?[0-9-]+$

here on Regexr

重要的部分是字符串开头和结尾的锚点^$。我还在开头添加了\+?,以匹配可选的++ 需要转义,因为它是正则表达式中的特殊字符,? 在它使其成为可选之后。

当然,这是一个非常简单的模式,请注意,例如"-----" 也是有效的。

【讨论】:

  • 感谢您的回复,当我尝试您的表达时,它显示“+”是无法识别的转义序列的错误
  • @Shanish 也许你需要双重转义?试试^\\+?[0-9-]+$。您没有告诉我们您的语言,也许您可​​以使用原始/逐字字符串来避免双重转义。
  • 感谢您的友好回复,请参阅我在 UI 部分和代码隐藏中检查手机无格式,因为此 cb 正在使用 Microsoft.Practices.EnterpriseLibrary.Validation.Validators dll ,当我给电话没有值为 080-244408 或 0802404408 时,它没有显示错误,但是当我给 080-2404408(比以前多 1 个字符)时,它显示无效电话号码,我仍然面临这个问题,我只是一个初学者,我在 c#.net 中使用这个
  • 将您的代码编辑到问题中(仅重要部分,我们可以看到您在做什么!)。在 cmets 中它不好阅读,很少人会看到它。
  • 感谢stema,我得到了解决方案,错误只是我的,我只是在正则表达式之前使用了stringlength验证器,我将长度限制在1到10之间,实际上我试图使用> 10个字符,最后我修复了它......它工作正常......非常感谢您的指导和善意的回应
【解决方案3】:

重新导入 mystr = """ 8147708287 08147708287 +918147708287 +91-8147708287 """

打印(re.findall(r'\b91-*\d{10}',mystr))

【讨论】:

  • 我怀疑这是否有帮助——甚至根本没有用。需要解释一下吗?
猜你喜欢
  • 2013-08-23
  • 2017-09-23
  • 2014-02-15
  • 1970-01-01
  • 2019-05-02
相关资源
最近更新 更多