我需要一个正则表达式来阻止任何不是3个(或更多)字母单词的东西?

时间:2017-11-28 20:55:29

标签: java regex eclipse

在我的代码中,我希望任何不是三个(或更多)字母的内容进入while循环以及其他任何内容继续进入代码。我对Regex并不那么自信,并希望得到如何解决它的帮助。

    while (!(word.matches("(a-z){3,}")))
    {
        System.out.println("You have not entered in a valid word (it has to be at least 3 letters long).");

        System.out.println();

        System.out.print("Please enter a word of your choice: ");
        word = keyboard.nextLine();

    }

N.B。这是作业

1 个答案:

答案 0 :(得分:1)

您需要使用[a-z],这意味着在az之间使用字符,而不是(a-z),这意味着完全匹配"a-z"

  • 您最好\w代表word-character = [a-zA-Z0-9_]的课程
  • \w = az之间的字母或AZ之间或0之间的字母和9,或_

==> regex demo

 
while (!word.matches("\\w{3,}")) {  // don't match more than 3
   //
}

// -- OR --

while (word.matches("\\w{0,3}")) {  // match between 0 and 3 is also correct
   //
}