如何接受包含'999-'但不包含'999-99.999'的行

时间:2014-03-05 18:29:57

标签: c# regex

任何人都可以帮我解决正则表达式问题吗?

我需要创建一个定位文本'999 - '的模式,但不包含任何格式为'999-99.999'的文本。

示例:

  • “序列:999-9免费项目”---->必须找到
  • “sequence:Code ag 1234-56.789”---->不应该找到

目前我有以下正则表达式但不起作用所以你没有.999'9999-99'

^((?![0-9]{3}-[0-9]{2}.[0-9]{3}).)*$

你能帮助我吗?

3 个答案:

答案 0 :(得分:2)

我建议您在需要编写正则表达式时随时尝试http://www.regexr.com/

答案 1 :(得分:0)

请注意,您使用的是.,而不是\.它应该仍然有用,但我认为值得一提。我还不能写评论,所以我把它作为我答案的一部分。此外,在原始问题中999之后还有一个空格,我不确定这是否与您提供的正则表达式相关。

我试过了:

\b(999-)(?!99\.999)

如果您要查找任何数字,可以将这些9替换为\d s

我在regex101.com尝试了这个并且它有效,但是我对你的原始帖子发表了评论,我认为你需要更多细节。

答案 2 :(得分:0)

这可能有效

 #  @"(?s)^(?=(?:(?!\d+-\d{2}\.\d{3}).)+$).*\d+-.*$"

 (?s)              # Dot-All
 ^                 # BOS
 (?=               # Not this form anywhere in the string
      (?:
           (?! \d+ - \d{2} \. \d{3} )
           . 
      )+
      $ 
 )
 .* \d+ - .*       # Form needed
 $                 # EOS