正则表达式以提取符合指定条件的字符串

时间:2015-01-07 16:56:48

标签: .net regex string

如果substring符合以下条件,我需要从一行中提取子字符串:

-starts with 3 - 所有字符都是数字或破折号。如果所有数字都是从10个字符长度到14,否则,如果countains破折号,最多可以达到19

我尝试使用

Dim m As Match = Regex.Match(line.ToLower().Trim(), _
               "33[\d-]{10,19}", _
                  RegexOptions.IgnoreCase)

但上面的m.Success返回false

任何人都可以帮忙修复我的正则表达式吗?

2 个答案:

答案 0 :(得分:0)

^3(?:\d{9,13}|[\d-]{9,18})$

细分:

 ^                # BOS
 3                # Starts with '3'
 (?:              # Cluster
      \d{9,13}         # All digits, total 10 - 14
   |                 # or,
      [\d-]{9,18}      # Digits or dashes, total 10 - 19
 )                # End cluster
 $                # EOS

答案 1 :(得分:0)

尝试这种模式

^(?=(-?\d){10,14}$)3[0-9-]{9,18}$

Demo