好的,这里有: 目标是使正则表达式与“BLABLA BLA B BLAB”匹配,类似于:
^[A-Z](\s?[A-Z])*$
但主要问题是匹配字符串的长度可以是1到无穷大之间的任何值。那么是否可以制作一个与上面完全相同的正则表达式,但只有当字符串长度小于或等于20个字符时才匹配? (不允许在字符串的开头和/或结尾处有空格。)
我理解在这种情况下,最好在regexp之外更改字符串长度(例如,在我的app的代码中,已经完成此操作),但是我只是好奇我是否遗漏了一些简单的东西?
编辑:20个字符是字符串的全长,包括单词之间的可选单个空格。字长可以是1个字符或更多。 因此,“AAAAABBBBBDDDDDEEEEE”(20个大写字母)应匹配,“AAAAABBBBB CCCCDDDDD”应匹配(中间1个空格),“AAAA BBBB CCCC DDDDD”应匹配(中间3个单个空格,字符串长度为20),“AA B”应匹配(中间单个空格,总长度<20),“AAAAABBBBBCCCCCDDDDDF”不匹配(因为字符串长度为21)等。
答案 0 :(得分:4)
试试这个
^(?=.{1,20}$)[A-Z](\s?[A-Z])*$
答案 1 :(得分:1)
使用此:
^(?=.{1,20}$)([A-Z]+\s?)+[A-Z]$