regex - 用于根据以下正则表达式验证多个输入的正则表达式
问题描述
我有一个正则表达式来验证我的输入,比如
正则表达式:
^(?=.{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 所示)?
解决方案
如果最大值对强制执行不重要,则只需允许任意重复即可。
^(?=[^;]{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}
.
减号只是匹配自身,因此无需将其放入字符类中;并且没有充分的理由指定任何内容的单个重复,因此我相应地简化了主要的正则表达式。
推荐阅读
- c# - 编辑 DataGridTextColumn 或 DataGridComboBoxColumn 时自动完成
- python - 为什么视图路径 /slug:slug/slug:url/ 找不到 django
- symfony - Symfony 5 Phpunit 未定义方法
- python - 为什么大多数方法都是无效的,为什么将它们分配给变量有助于打印不是“无”值?
- node.js - 如何在 EJS 中使用模板字符串
- javascript - webpack splitchunksplugin minsize 不起作用
- reactjs - 如何使用 createContext 和 useReducer 管理多个 reducer
- ios - 如何将图像添加到存储在变量中的 QuickLook
- javascript - Angular Validator 检查输入是否为数字
- typescript - 带有生成 ID 的可选参数