正则表达式单个字符串中的两个备用模式

时间:2011-04-27 18:35:13

标签: regex

我是正则表达式的初学者,所以你的帮助对我来说非常大。 我有这个模式字符串:

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

仅以此格式匹配电话号码:(555)555-5555 但我真正需要的是要遵循的顺序,而不是字符和位置的确切数量。所以我需要以下顺序:

  1. 空白空间
  2. -
  3. 这可能吗? 谢谢。

4 个答案:

答案 0 :(得分:2)

那么,这样的事情呢?

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

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

编辑:在关闭paren

之后向空格添加(无或多个)量词

答案 1 :(得分:0)

使用+代替固定数量的字符?

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

答案 2 :(得分:0)

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

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

有关详细信息,请参阅Regex Quantifiers

答案 3 :(得分:0)

如果您不在乎区号中有多少个号码或号码,您可以使用:

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

这允许在括号和短划线周围以及数据的开头和结尾处有任意数量的空白区域(包括没有空格)。

如果您确实关心了多少个数字,请使用\d{1,3}代替\d+。这允许在一个地方1-3位数。