求符合单行长≤5、总行数≤10的正则表达式解决方案
正则表达式校验方案建议
正确的正则表达式
针对「每行字符长度≤5、总行数≤10、每行均符合长度要求」的校验规则,适配Java @Pattern 注解的正确正则表达式如下:
@Pattern(regexp = "^[a-zA-Z0-9 ]{1,5}(?:\\n[a-zA-Z0-9 ]{1,5}){0,9}$")
规则解析
^:匹配输入字符串的起始位置[a-zA-Z0-9 ]{1,5}:匹配第一行内容,允许大小写字母、数字、空格,长度限制为1-5位(?:\\n[a-zA-Z0-9 ]{1,5}){0,9}:匹配后续0-9行(加上第一行总共最多10行),(?:...)为非捕获组,避免冗余分组存储;\\n匹配换行符,后续紧跟每行的合法内容$:匹配输入字符串的结束位置
输入示例
有效输入
123A
123
12345
123
123
123
123
12345
12345
Test
无效输入
12345
123
12345
123
123
123
123
12345
12345
Test123123
原正则问题说明
你之前使用的^([a-zA-Z0-9 \n]{1,10}+$存在两处核心问题:
- 语法错误:括号不匹配(缺少闭合
)),且多余的+符号导致逻辑混乱 - 逻辑错误:仅笼统限制总长度1-10位,未对每行长度、行数做精准约束,完全无法满足需求
内容的提问来源于stack exchange,提问作者brazil
相关产品推荐
相关产品推荐

