【问题标题】:Regex - No Numbers Found [duplicate]正则表达式 - 找不到数字 [重复]
【发布时间】:2013-05-12 19:16:45
【问题描述】:

使用Regex时是否可以检查字符串中是否没有数字?

所以如果我这样做:

String temp;
String myText = "abcd";
temp = Regex.Match(myText, @"\d+").Value;

我如何检查没有找到号码?

我只是这样做吗:

if (temp = ""){
//code
}

【问题讨论】:

  • 你可以做if (Regex.IsMatch(myText, @"\d+"))。容易,不是吗?

标签: c# regex


【解决方案1】:
Match temp;
String myText = "[0123456789]";
temp = Regex.Match(myText).Value;
bool NoDigits = !temp.Success;

对于我的回答中最初的混淆,我深表歉意。此外,您可以继续使用 \d 标志,我只是喜欢 [0123456789],因为它使它在这种简单的情况下更加突出。

【讨论】:

  • 当你要指定[a-z]时怎么办,都打出来?
  • @weston 不,但是我的手指在键盘上运行很容易,这段代码 sn-p 更多地用于解释使用尽可能少的字符的概念(应该 从不 成为开发人员的目标)。
  • 大声笑(在键盘评论上运行手指)!不,在这种情况下,我不关心代码的长度,只关心代码质量。我认为避免使用提供给您的工具只是为了使某人变得笨拙,这是一种不好的做法。给人们一些信任。此外,范围 ([0-9]) 和数字 (\d) 实现可能会更有效,只要想想与像您这样的字符集实现相比,它们将如何实现。
  • 效率不是我考虑的问题。我只是假设实现会在实际运行正则表达式之前将速记转换为相同的值,但这实际上是你提到它时要考虑的事情。
  • 顺便说一句,这引发了我的一些调查,结果令人惊讶:stackoverflow.com/questions/16621738/d-less-efficient-than-0-9
【解决方案2】:

你没有得到匹配。如果您有匹配项,您会在某处找到一个号码。

【讨论】:

    【解决方案3】:

    只需使用正则表达式进行反向匹配。

    if ( !Regex.Match ( stringToCheck, "^[0-9]+$" ).Success ) {
    
      }
    

    【讨论】:

      【解决方案4】:

      你可以使用IsMatch然后否定

      if(!Regex.IsMatch(inp,".*\d.*"))//no number found
      

      【讨论】:

        【解决方案5】:

        更好的方法是

        if (Regex.IsMatch(stringToCheck, @"\d+"){
            // string has number
        }
        

        如果你想处理找不到数字,那么试试

        if (!Regex.IsMatch(stringToCheck, @"\d+"){
            // no numbers found
        }
        

        查找字符串中所有数字的匹配项

        MatchCollection matches = Regex.Matchs(stringToCheck, @"\d+");
        
        foreach(Match match in matches){
            //Console.WriteLine(match.Value);
        }
        

        【讨论】:

        • 对不起,我毁了你完美的声誉:P.
        • @Fuex - 非常感谢!
        【解决方案6】:
        String myText = "abcd";
        
        if (Regex.IsMatch(myText, "[0-9]+"))
        {
            // there was a number
        } else {
            // no numbers
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-10-11
          • 2021-11-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多