检查String是否不仅包含整数

时间:2017-03-25 12:18:32

标签: java regex string

如果只包含整数,我试图在String上执行一段代码。例如,如果输入是 2017 ,则不会发生任何事情;否则如果它是 2017abc ,则会执行代码块。

我已经尝试了正则表达式^[0-9]+$,但似乎if (!keyword.matches("/^[0-9]+$/")无法按照我的意愿运行。我检查了多个在线资源,我很确定正则表达式是正确的。

我在这里错过了什么吗?

更新

使用keywords.replaceAll("\\d", "").length() > 0解决了问题。但仍然不确定为什么以上不起作用。

无论如何,感谢有人提前提出这个答案。 :)

4 个答案:

答案 0 :(得分:2)

您在更新中说明的解决方法看起来不错。但是,我会尽力解决您对初始代码无法正常工作的好奇心。

我测试了你的问题陈述中给出的正则表达式:

  

^ [0-9] + $

它似乎对我很好。基于我的快速研究,问题可能出在您在问题中稍后提到的java代码中。不需要开头和结尾的斜杠。

替换此

if (!keyword.matches("/^[0-9]+$/")

用这个

if (!keyword.matches("^[0-9]+$")

你很高兴。很高兴知道我是否遗漏了什么。

有关正则表达式和模式的广泛知识,我建议使用以下链接。

http://www.vogella.com/tutorials/JavaRegularExpressions/article.html#regular-expressions

祝你好运。

答案 1 :(得分:0)

正确的正则表达式可能是.*[^0-9].*。如果matches()返回true,则执行您需要执行的操作。

答案 2 :(得分:0)

试试这个

import java.util.Scanner;
    public class NotOnlyIntegers
    {
        public static void main(String[] args)
        {
            Scanner scan = new Scanner(System.in);
            System.out.println("Please enter the String");
            String test=scan.nextLine();

            int digit=0;
            int letter=0;
            for(int x=0;x<test.length()-1;++x)
            {
                if(Character.isDigit(test.charAt(x)))
                {
                    ++digit;
                }
                else if(Character.isLetter(test.charAt(x)))
                {
                    ++letter;
                }
            }
            if(digit>0&&letter>0)
            {
                System.out.println("Code Executed");
            }
            else
            System.out.println("Code Not Executed");
        }

    }

答案 3 :(得分:0)

它不漂亮,但为什么不让Java做这个工作:

select bi.*
from BuyInvoices bi
  inner join Sellers s
    on bi.SeId = s.SeId
where (bi.BIId = @biid 
    or @biid is null)
  and (s.name like N'%'+@Name+'%' 
    or nullif(@Name,'') is null)
  and (s.Company like  N'%'+@Company+'%' 
    or nullif(@Company,'') is null);