2011-04-27 62 views
1

我是正则表达式的初学者,所以你对我的帮助将非常大。 我有这样的模式字符串:单个字符串中的两种交替模式的正则表达式

@"^\(\d\d\d\) \d\d\d-\d\d\d\d$" 

仅在该格式相匹配的电话号码:(555)555-5555 但我真正需要的,是应遵循的顺序,而不是角色和位置的确切数目。所以,我需要按以下顺序:

  1. 数字
  2. 空白
  3. 数字
  4. -
  5. 数字

这可能吗? 谢谢。

回答

0

使用+而不是固定数目的字符后?

@"^\(\d+\) \d+-\d+$" 
+0

感谢您的代码和解释 – dex 2011-04-27 18:50:06

2

那么,这样的事情?

^\(\d+\)\s*\d+-\d+ 

1 Open Paren 
2 Numbers 
3 Close Paren 
4 Space 
5 Numbers 
6 Dash 
7 Numbers 

编辑:增加了(没有以上)量词的空间接近括号

+0

是的,我现在试试这个......谢谢 – dex 2011-04-27 18:38:30

+0

@dex,你甚至可以在'\ s'后面加一个'+',这样两个(或多个)空格字符也会导致匹配。 – 2011-04-27 18:39:28

+0

它的工作完美,非常感谢:) – dex 2011-04-27 18:40:13

0

您应该使用\d{x,y}来表示至少x长和最长y长的数字序列。例如:

@"^\(\d{1,3}\) \d{3,5}-\d{4,6}$" 

欲了解更多详情,请参阅Regex Quantifiers

+0

感谢你也为代码和解释...今天我有一个快速教训:) – dex 2011-04-27 18:50:50

0

如果你不关心有多少数字是区号,或数字,你可以使用这个:

^\s*\(\s*\d+\s*\)\s*\d+\s*-\s*\d+\s*$ 

这允许围绕圆括号和短划线以及数据的开始和结束处的任何空白空间(包括无空格)。

如果你在乎多少个数字,例如使用\d{1,3}而不是\d+。这允许在一个地方1-3个数字。

+0

感谢您的答复 – dex 2011-04-27 18:51:24