开发者

regular expression for line length and multiline input

I have tried to create a regular expression that would match if the input text has max 3 lines of text, at most 10 characters per line, and characters are all upperc开发者_StackOverflowase. So this string should match: "AA\n\nAA"

but this shouldn't "A12c"

I thought this would work: (I enabled multiline in Pattern)

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

but it doesn't, it only matches if the text is jut one-liner.

I cannot understand what is wrong with the expression - isn't the {0,3} quantifier applied correclty?


You forgot to match the line terminator:

(^[A-Z]{0,10}$\r?\n?){0,3}

should work, assuming that the option for ^ and $ to match start/end-of-line and not start/end-of-string is set.

If you need the regex to fail if there are more than 3 lines in your string, you can force the regex engine to match the entire string or not at all by surrounding it with \A and \z anchors:

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

However, not all regex flavors support these start-of-string/end-of-string anchors.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜