Swagger3(OAS)中逗号分隔字符串的正则表达式编写求助
解决Swagger3(OAS)中逗号分隔字符串的正则表达式问题
需求明确
- 字符串由多个逗号分隔的子串构成
- 每个子串长度限制在5-15位
- 子串仅允许包含
a-z、A-Z、0-9字符
原有正则的问题
你之前使用的[a-zA-Z0-9]{5,15}只能匹配单个符合规则的子串,既无法处理多子串的逗号分隔场景,也没有限制整个字符串的首尾边界,导致会匹配到不符合要求的内容。
正确正则表达式
^[a-zA-Z0-9]{5,15}(,[a-zA-Z0-9]{5,15})*$
规则拆解
^:锁定字符串开头,避免匹配部分符合规则的内容[a-zA-Z0-9]{5,15}:匹配第一个符合长度和字符要求的子串(,[a-zA-Z0-9]{5,15})*:匹配0个或多个以逗号开头的合规子串,支持多子串场景$:锁定字符串结尾,确保整个内容完全符合规则
验证结果
有效输入
- 3OMYJF5V11MJL,3OMYJF5V11MOP
- 3OMYJF,3OMYJim,3OMYJF090
无效输入
- ??:包含非字母数字字符
- 123:子串长度不足5位
- 123456789098765432:子串长度超过15位
Swagger3(OAS)中的配置示例
在Schema中可以这样定义该字段:
components: schemas: TargetString: type: string pattern: "^[a-zA-Z0-9]{5,15}(,[a-zA-Z0-9]{5,15})*$"
内容的提问来源于stack exchange,提问作者Abdullah Imran
相关产品推荐
相关产品推荐

