2011-09-19 115 views
4

我在审查应用程序和记录的C#代码。在阅读代码时,我看到了美国电话号码的不寻常的正则表达式。正则表达式是下面电话号码正则表达式

@"^[01]?[- .]?(\([2-9]\d{2}\)|[2-9]\d{2})[- .]?\d{3}[- .]?\d{4}$"; 

我从上述电话号码的结论是像01.(29).123.4567或01-38-111-1111。

上午我解释是否正确?任何有关正则表达式的见解都将受到高度赞赏以上正则表达式的例子可以帮助我更多地了解正则表达式。

回答

11

读从左到右...

  • ^[01]?可能开始与01
  • [- .]?五月可能应遵循的-空间.
  • (([2-9]\d{2})|[2-9]\d{2})必须29之间的数字开始,然后后跟任意两位数字。 (这奇怪地重复了两次,并且捕获组应该总是包含相同的部分,很奇怪)。这可能意味着摆脱了括号,这会更有意义。通常,您使用\字符进行转义。
  • [- .]?五月可能应遵循的-空间.
  • \d{3}必须跟随任意三位数。
  • [- .]?五月可能应遵循的-空间.
  • \d{4}$必须遵循(和结束)与任何四个数字。
+0

我正要做同样的事情。为我保留了一些打字。 +1给你。我认为“不匹配”的parens应该是逃跑的,产生(29)或者29,或者使用数字2-9的任何2位数字。更清晰,我认为这意味着(\([2-9] \ d {2} \)| [2-9] \ d {2}) – Kibbee

+0

^[01]?这意味着它可以从一个空间开始? – MStp

+0

@AdnanBhatti:错误的复制和粘贴。我责怪OP缺乏代码格式。 – alex

0

^[01]? = 0或1或全无

[ - ]? = - 或。或没有

(([2-9] \ d {2})=第一数量大于或等于2,接着2位数字,其可以是任何数目的B/W 0到9 ..装置012或112两者将正常工作

| =或签名

[2-9] \ d {2})=第一数量的b/W 2和图9,接着2号的b/W 0-9

[ - 。] ? =意味着 - 或。或者没有

\ d {4} =任意四位数字组成的B/W 0-9

$ =它确保用正则表达式是什么$号之前结束。 ^与$做同样的事情,但它只检查正则表达式的开始。