正则表达式匹配大写单词的字符串,由SINGLE空格分隔,字符串的长度< = 20

时间:2012-09-05 11:44:56

标签: regex string limit

好的,这里有: 目标是使正则表达式与“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)等。

2 个答案:

答案 0 :(得分:4)

试试这个

^(?=.{1,20}$)[A-Z](\s?[A-Z])*$

答案 1 :(得分:1)

使用此:

^(?=.{1,20}$)([A-Z]+\s?)+[A-Z]$