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

标签 regex string limit

好的,这里是: 目标是使正则表达式匹配“BLABLA BLA B BLAB”之类的字符串,例如:

^[A-Z](\s?[A-Z])*$

但主要问题是匹配字符串的长度可以是 1 到无穷大之间的任意值。那么是否有可能创建一个与上面的行为完全相同的正则表达式,但仅在字符串长度小于或等于 20 个字符时才匹配? (字符串开头和/或结尾处不允许有空格。)

我理解,在这种情况下,最好在正则表达式之外更改字符串长度(例如,在我的应用程序的代码中,已经这样做了),但是我只是好奇我是否遗漏了一些简单的东西?

编辑:20 个字符是字符串的完整长度,包括单词之间可选的单个空格。字长可以是 1 个字符或更多。 因此,“AAAABBBBBBDDDDDEEEEE”(20 个大写字母)应匹配,“AAAAABBBBB CCCCDDDDD”应匹配(中间有 1 个空格),“AAAA BBBB CCCC DDDDD”应匹配(中间有 3 个单个空格,字符串长度为 20),“AA B”应匹配(中间有一个空格,总长度 < 20),“AAAAABBBBBCCCCCDDDDDF”不应匹配(因为字符串长度为 21)等。

最佳答案

试试这个

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

关于正则表达式匹配大写单词的字符串,以单个空格分隔,字符串长度 <= 20,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12280704/

相关文章:

字符串连接在 Bash cygwin 中不起作用

将 float(x) 舍入到最近的 .5 即 > x

mysql - 如何为mysql delete语句设置正确的限制

jquery - 设置可以拖动到列表中的项目限制

javascript - 单词边界对符号字符有效吗?

javascript - JSON 从最后一个对象中删除尾随逗号

java - 正则表达式修改字符串

javascript - 如果某个字符较早出现,如何排除字符

java - 检查java字符串是否包含unicode字符

c++ - 如何在 C++ 中将整个 xml 文件源存储为字符串