正则表达式模式匹配.Net

时间:2015-05-01 14:59:08

标签: .net regex

我正在尝试以下可能的情况。它们都是电话号码,但它们可以来自世界上任何地方。

  • " 92134"
  • &#34 + 234234"
  • " -234234"
  • " 234(234)"
  • "(559)559-5591 ext123"
  • "(559)559-5591 EXT123"
  • "(559)559-5591 Ext123"
  • "(559)559-5591 x123"
  • "(559)559-5591 X123"
  • " 416.123.4567"

现在我不限制数字或任何数字,但关键问题如下。

允许:

  • '()',' - ','。'字符串中的任何地方......开始结束e.t.c
  • ' +'作为第一个角色(虽然不需要)
  • '分机' Ex'' EXT',' X',' x'仅适用于最后一组数字。所以不是(559)559 EXt5591 EXT123

现在我已经写了以下内容,但我对Regex的了解不足以更多地优化它并得到我想要的结果。

@"^(?=[0-9])([-.+ Ee Xx Tt \s()0-9])+$"

1 个答案:

答案 0 :(得分:1)

您可以使用以下内容:

/^
(
(?:
    (?:^\+)               # matches the "+" sign at the beginning
  |
    (?:\(\d+\))           # matches '(' and its paired ')' but allows only digit inside
  |
    \d                    # matches a digit
  |
    [ .-]                 # matches a separator character
  |
    (?:(?>ext|x)\d{3}$)   # matches the EXT' part at the end
)+
)
$/ix

以下示例:https://regex101.com/r/nC2vV4/1