Java 对于每个输入,无论是正确的还是错误的,此代码的答案都是错误的
我希望正则表达式输出false表示错误输入,true表示正确输入,但只有false显示在输出上。这是Java正则表达式的程序“创建一个接受10位数字字符的正则表达式” 仅以7、8或9开头” 这是JDK1.8.0的代码Java 对于每个输入,无论是正确的还是错误的,此代码的答案都是错误的,java,regex,Java,Regex,我希望正则表达式输出false表示错误输入,true表示正确输入,但只有false显示在输出上。这是Java正则表达式的程序“创建一个接受10位数字字符的正则表达式” 仅以7、8或9开头” 这是JDK1.8.0的代码 public static void main(String args[]) { String st=""; Scanner sc=new Scanner(System.in); st=sc.nextLine(); boolean result=Pa
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);
}
您总是与字符串文字st进行比较,而不是与所读行的引用进行比较 而不是
boolean result=Pattern.matches(“[7,8,9]{1}[0-9]{9}”,“st”)代码>
使用boolean result=Pattern.matches(“[789][0-9]{9}”,st)代码>您总是与字符串文字st进行比较,而不是与您读取的行进行比较
而不是boolean result=Pattern.matches(“[7,8,9]{1}[0-9]{9}”,“st”)代码>
使用boolean result=Pattern.matches(“[789][0-9]{9}”,st)代码>当前使用的是在字符串中搜索模式,该字符串的值为“st”
,而不是局部变量的值st
更改您的线路:
boolean result = Pattern.matches("[789]{1}[0-9]{9}",st);
当前使用的是字符串中的搜索模式,该字符串的值为“st”
,而不是局部变量的值st
更改您的线路:
boolean result = Pattern.matches("[789]{1}[0-9]{9}",st);
这些表达方式也适用于:
boolean result = Pattern.matches("[7-9][0-9]{9}", st);
或
另外,如果我们加上“^”和$anchors,也可以:
^[789][0-9]{9}$
^[789]\d{9}$
这些表达方式也适用于:
boolean result = Pattern.matches("[7-9][0-9]{9}", st);
或
另外,如果我们加上“^”和$anchors,也可以:
^[789][0-9]{9}$
^[789]\d{9}$
你的意思是没有引号的stPattern.matches(“[789]{1}[0-9]{9}”,st)
您可以将其缩短为[789][0-9]{9}
您不需要在字符类中添加逗号,否则它将被逐字匹配。在删除st上的qoutes后,输出就来了。您能告诉我为什么st上不需要qoutes,但这是regex的重要语法吗?好的。获取用户输入并用变量“st”指向它的目的是什么?在下一行中,您使用的是字符串文字而不是变量?如果答案有帮助,您可以向上投票。祝你好运!你的意思是没有引号的stPattern.matches(“[789]{1}[0-9]{9}”,st)
您可以将其缩短为[789][0-9]{9}
您不需要在字符类中添加逗号,否则它将被逐字匹配。在删除st上的qoutes后,输出就来了。您能告诉我为什么st上不需要qoutes,但这是regex的重要语法吗?好的。获取用户输入并用变量“st”指向它的目的是什么?在下一行中,您使用的是字符串文字而不是变量?如果答案有帮助,您可以向上投票。祝你好运!