.net 用于提取满足指定条件的字符串的正则表达式

.net 用于提取满足指定条件的字符串的正则表达式,.net,regex,string,.net,Regex,String,如果子字符串满足以下条件,我需要从行中提取子字符串: -从3开始 -所有字符都是数字或破折号。如果全部为数字,则长度从10个字符到14个字符不等,否则,如果计数为破折号,则长度最多为19个字符 我试着用 Dim m As Match = Regex.Match(line.ToLower().Trim(), _ "33[\d-]{10,19}", _ RegexOptions.IgnoreCase) 但是上面的m.Success返

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

-从3开始 -所有字符都是数字或破折号。如果全部为数字,则长度从10个字符到14个字符不等,否则,如果计数为破折号,则长度最多为19个字符

我试着用

Dim m As Match = Regex.Match(line.ToLower().Trim(), _
               "33[\d-]{10,19}", _
                  RegexOptions.IgnoreCase)
但是上面的m.Success返回false

有人能帮忙修复我的正则表达式吗?

^3(?:\d{9,13}{124;[\ 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
试试这个模式

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

你能提供成功和失败条件的示例数据吗?问题是,
3------
OK?不,它必须至少有10个数字,这与
3------
匹配,不确定是否OKOP@alphabravo-你为什么不问问他这个不适用于字符串“number:3333”@ElenaDBA-如果是子字符串,移除锚定
3(?:\d{9,13}|[\d-]{9,18})
。我相信这是您的陈述
10个字符,最长14个,
请提供示例