RegEx

时间:2017-07-16 15:33:56

标签: c# asp.net-mvc

我需要使用国际代码处理电话号码,但我不需要将手机作为特定格式。我已经找到了很多关于如何将它应用于美国,西班牙等的示例...但是没有一个只允许输入带有00或+的数字,允许空格和/或破折号或没有空格或破折号。

我在asp.net MVC 5应用程序的电话号码字段中应用了以下表达式:

[RegularExpression(@"^\+?\d*$", ErrorMessage = "Not a valid Telephone number.")]

目前,它处理以下情况:

+19999999999
0019999999999

这很好但是它不允许空格和/或破折号这样的数字如下:

+ 1 999 999 99 99
+32 999-999-99-99
+7 999 999-99-99

不被视为有效。

如何允许包含空格和/或破折号。更具体地说,是否可以确保:

  1. 数字之间只有1个空格或1个短划线
  2. 不允许空格或没有短划线(当前情况)
  3. 确保只使用了1个+号
  4. 确保号码长度至少为10个字符且少于20个字符。
  5. 如果1.太复杂了,你能告诉我如何在没有任何特定规则的情况下允许空格和/或短划线,所以这样的数字:-33-999 999 + 99-99,而完全错误将会仍然有效。

    由于

2 个答案:

答案 0 :(得分:1)

^ +(\ S)\ d * \ S \ d {3}(\ S | - )?\ d {3}(\ S | - )?\ d *(\ S?| - ?)\ d * $

以上regx

  • \ s用于检查任何空格

  • (\ S)?意味着可能有空格或者可能没有

  • 用于验证长度,您可以使用{rang start,rang end}替换* 例如{10,20}

  • \ d {3}表示只接受该地点的3位数

  • (\ ​​S | - )?意味着可以有空格或 - 不是两个

=============================================== =========================

您可以使用此网站进行测试http://regexr.com/ 有关更多信息,请参阅此图像
Regx Tested

休息是由你决定的。你可以在学习之后建立自己需要的regx,你应该在上面提到的网站上查看正则表达式备忘单。它会有很大的帮助。

答案 1 :(得分:1)

根据@ mlkptl35的建议,这是我在[在此处输入链接描述] [regexr]中尝试使我的RegEx工作的最接近的工作

^([+]|[00]{2})([0-9]|[ -])*

它将允许字符串:

  1. 以国际部分的+或00开头,后跟最多3位

  2. 允许任何数字,空格或 - 之后

  3. 通过上述RegEx,我能够处理以下数字:

    +32999999
    +1-99-999-99-99
    +33 99-999-99-99
    +7 999999999
    +44 999999999
    +353 99-9999999
    +1 99-999-9999
    0044999999999
    00353 99-999 9999
    

    等等。

    我确信它远非完美,但我只是在学习,所以请向所有“RegEx”专家提前道歉。

    如果我有时间改进它,我会提供更新。