我希望正则表达式输出对于错误的输入为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);
}
答案 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}$