正则表达式匹配2或3个单词,但不匹配1个单词

时间:2017-10-29 14:14:22

标签: java regex

我目前正在使用以下正则表达式来检查输入仅为2或3个字。单词不应包含任何数值。

^\s*([a-zA-Z]+\s*){2,3}$

然而,这允许输入" Tommy" (1字)不应该被允许。

谢谢

2 个答案:

答案 0 :(得分:2)

您可以在

中实现字边界
^\s*(?:(?:\b[a-zA-Z]+\b)\s*){2,3}$
#         -^-        -^- 

请参阅a demo on regex101.com

答案 1 :(得分:2)

您可以使用此正则表达式匹配由水平空格分隔的2或3个单词:

^\h*[a-zA-Z]+\h+[a-zA-Z]+(?:\h+[a-zA-Z]+)?$

RegEx Demo

您还可以使用split功能并检查长度:

String[] words = input.split("\\h+"):
if (words.length == 2 || words.length == 3) {
    // 2 or 3 words found
}