Java将字符串与regex-while循环进行比较

Java将字符串与regex-while循环进行比较,java,regex,while-loop,java.util.scanner,Java,Regex,While Loop,Java.util.scanner,我希望用户输入一个字符串,如果该字符串与我的正则表达式不匹配,那么我希望输出一条消息,用户再次输入一个值 问题是,即使字符串与正则表达式匹配,它也会将其视为不匹配 我的正则表达式: 这应该等于-Name,Name [[A-Z][A-zA-Z]*,\s[A-Z][A-zA-Z]*] 我的while循环: System.out.println("Enter the student's name in the following format - surname, forename: "); s

我希望用户输入一个字符串,如果该字符串与我的正则表达式不匹配,那么我希望输出一条消息,用户再次输入一个值

问题是,即使字符串与正则表达式匹配,它也会将其视为不匹配

我的正则表达式: 这应该等于-
Name,Name

[[A-Z][A-zA-Z]*,\s[A-Z][A-zA-Z]*]

我的
while
循环:

  System.out.println("Enter the student's name in the following format - surname, forename: ");  studentName = input.next();
  while (!studentName.equals("[[A-Z][a-zA-Z]*,\\s[A-Z][a-zA-Z]*]")) {
    System.out.println("try again");
    studentName = input.next();
  }

equals
方法检查字符串等价性,而不是匹配正则表达式


只需将
等于
替换为
匹配项
。您还应该删除外部方括号。

可能是您的regexp错误吗

test.matches("[A-Z][a-zA-Z]*,\\s[A-Z][a-zA-Z]*")

对我来说很好。

当我这样做时,它与错误的方向匹配。i、 e.如果是我想要的格式,它会报告错误。如果我删除
在前面
!studentName.equals
当它与regexI have
匹配时会报告一个错误,(!studentName.matches(“[A-Z][A-zA-Z]*,\\s[A-Z][A-zA-Z]*”)
但是当我尝试
Name时,Name
会打印
重试
两次,很可能
Name,Name
会在输入中分隔字符串。尝试在您打印的邮件中添加错误的输入。看起来您是对的,它正在打印
Name,Try-reach-Name-Try-reach
如何解决此问题?
Scanner
javadoc说:
Scanner使用分隔符模式将其输入拆分为标记,默认情况下与空白匹配