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