行长度和多行输入的正则表达式

2 regex multiline

我试图创建一个正则表达式,如果输入文本有最多3行文本,每行最多10个字符,并且字符全部为大写,则匹配.所以这个字符串应该匹配:"AA\n\nAA"

但这不应该 "A12c"

我认为这样可行:(我在Pattern中启用了多行)

(^[A-Z]{0,10}$){0,3}

但事实并非如此,只有在文本突然出现时才会匹配.

我无法理解表达式有什么问题 - 是不是{0,3}量词应用了correclty?

Tim*_*ker 5

你忘了匹配行终止符:

(^[A-Z]{0,10}$\r?\n?){0,3}
Run Code Online (Sandbox Code Playgroud)

应该工作,假设为选择^$匹配的开始/结束线,而不是开始/-的字符串末尾设置.

如果你的字符串中有超过3行的正则表达式失败,你可以强制正则表达式引擎匹配整个字符串,或者根本不用它\A\z锚点:

\A(^[A-Z]{0,10}$\r?\n?){0,3}\z
Run Code Online (Sandbox Code Playgroud)

但是,并非所有正则表达式都支持这些字符串开头/字符串结尾锚点.