对于每个输入,无论正确与否,此代码的答案都将变为错误

时间:2019-06-23 15:07:56

标签: java regex

我希望正则表达式输出对于错误的输入为false,对于正确的输入为true,但是输出中仅显示false。这是“创建接受10位数字字符的正则表达式”的Java Regex程序。  仅从7、8或9开始”。

这是jdk 1.8.0的代码

public static void main(String args[])
{
    String st="";
    Scanner sc=new Scanner(System.in);
    st=sc.nextLine();
    boolean result=Pattern.matches("[7,8,9]{1}[0-9]{9}","st");
    System.out.println(result);
}

3 个答案:

答案 0 :(得分:2)

您一直在比较字符串文字st,而不是对您所读行的引用。

代替boolean result=Pattern.matches("[7,8,9]{1}[0-9]{9}","st"); 使用boolean result=Pattern.matches("[789][0-9]{9}",st);

答案 1 :(得分:2)

当前,正在使用值"st"而不是局部变量st的字符串搜索模式

更改您的行:

boolean result = Pattern.matches("[789]{1}[0-9]{9}",st);

答案 2 :(得分:1)

这些表达式也可以:

boolean result = Pattern.matches("[7-9][0-9]{9}", st);

boolean result = Pattern.matches("[789][0-9]{9}", st);

此外,也许如果我们添加^和$锚,那也可以:

^[789][0-9]{9}$
^[789]\d{9}$

Please see the demo here.