首页 > 解决方案 > 用于根据以下正则表达式验证多个输入的正则表达式

问题描述

我有一个正则表达式来验证我的输入,比如

正则表达式: ^(?=.{1,15}$)([a-zA-Z0-9]+)(?:[-]{1})[a-zA-Z0-9]+$

示例 1: BBB-123BBB

现在,我想使用上述方法创建一个正则表达式,其中我的正则表达式可以使用分号 ( ;) 作为分隔符验证多个输入,并且可以存在的最大输入为 20。

就像前 2 一样: BBB-123BB,AAA-1234;EEE-9876....20 items

例 2。 BB-123BB,AAA3-1234;EEE334-9876....20 items

如何扩展上面的正则表达式(第一个)以允许添加多个输入,同时让它们用分号分隔并且最多可以有 20 个项目(如 ex 2 所示)?

标签: regex

解决方案


如果最大值对强制执行不重要,则只需允许任意重复即可。

^(?=[^;]{3,15}(?:;[^;]{3,15})*$)[a-zA-Z0-9]+-[a-zA-Z0-9]+(;[a-zA-Z0-9]+-[a-zA-Z0-9]+)*$

如果您想明确允许 0 到 19 次重复,请将最后一个更改*{0,19}.

可以匹配主表达式的最小字符串为三个字符;所以我将长度约束更新为{3,15}.

减号只是匹配自身,因此无需将其放入字符类中;并且没有充分的理由指定任何内容的单个重复,因此我相应地简化了主要的正则表达式。


推荐阅读