关于java:检查String是否不仅包含整数

Check if a String does not only contain integers

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

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

我在这里错过了什么吗?

更新:

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

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


您在更新中声明的解决方法看起来不错。但是,我会尝试解决您的初始代码无效的原因。

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

^[0-9]+$

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

替换它

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

有了这个

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

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

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

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

祝好运。


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

1
2
3
4
5
6
7
8
9
  private boolean isInteger(String o){
    try{
        Integer.valueOf(o);
        return true;
    }catch(NumberFormatException ex){
        return false;
    }

}


试试这个

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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");
        }

    }

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