Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 美国电话号码的正则表达式_C#_Regex - Fatal编程技术网

C# 美国电话号码的正则表达式

C# 美国电话号码的正则表达式,c#,regex,C#,Regex,我是新加入regex的,为了把它做好,我花了好几个小时。我需要允许这些模式 NPA-XXX-XXXX (NPA) XXX-XXXX NPAXXXXXXX 其中NPA=数字0到9 X也是0到9之间的任意数 所以这是有效的 123-456-7890 1234567890 (123) 456-7890 但不是这个 (123)-456-7890 // because there is a dash after closing parenthesis (123)456-7890 // bec

我是新加入regex的,为了把它做好,我花了好几个小时。我需要允许这些模式

NPA-XXX-XXXX
(NPA) XXX-XXXX
NPAXXXXXXX
其中NPA=数字0到9 X也是0到9之间的任意数

所以这是有效的

123-456-7890
1234567890
(123) 456-7890
但不是这个

(123)-456-7890   // because there is a dash after closing parenthesis
(123)456-7890    // because there is no space after closing parenthesis
QWE-456-7890  // because there are one or more alpha characters
我用这个

Regex r = new Regex(@"^?\(?\d{3}?\)??-??\(?\d{3}?\)??_??\(?\d{4}?\)??-?$");
来自
System.Text.RegularExpressions


与有效表达式匹配的正则表达式是什么?

一种方法:

  • 所有数字都以
    XXX-XXXX
    结尾,其中
    -
    是可选的,所以这就是
    d{3}-?\d{4}
  • 数字以
    (NPA)
    NPA-
    开头,其中
    -
    是可选的,所以这是
    \(\d{3}\)
    (以空格结尾)或
    \d{3}
由于可以将正则表达式的“或”部分与
(a | b)
一起使用,因此整个正则表达式变成:

(\(\d{3}\) |\d{3}\-?)\d{3}\-?\d{4}

请注意
\(
转义括号,因此它不被视为正则表达式语言的一部分,而是您想要匹配的实际字符。

如果您展示了一些您尝试过的区域,这将对我们有所帮助,以便我们可以帮助对其进行微调。同样,我们可能想知道您正在使用的特定正则表达式库,因为语法可能会有细微的差异。您你应该阅读以了解SO社区对“给我一个正则表达式”问题的看法。然而,我认为你可能在这里得到了不公平的待遇……因为你似乎试图自己解决它。提示:你尝试的一个问题是
是正则表达式元字符,需要进行转义才能进行字面匹配。“我认为您可能在这里得到了一笔不公平的交易”——我不同意。您似乎已经尝试过了”--一个实际的尝试至少需要一些最小的努力来研究现有的解决方案,但问题中没有证据表明他们确实这样做了。而且在我看来,这个OP的需求不太可能是如此新奇,以至于堆栈溢出上的任何东西都没有任何用处或与这个问题相关。