正则表达式验证管道分隔项的数量

jus*_*ile 2 regex

我有一个字符串管道'|' 分隔.我需要一个正则表达式来根据管道字符验证项目数.所以正则表达式将执行以下操作:

如果项目的最大数量为三:

asdfasdf | asdfasdf | asdfasdf =有效

asdfasdf | asdfasdf | asdfasdf | asdfasf =无效

此外,此字符串可能为空.

任何帮助将非常感激

问候

Dan*_*uis 7

^(?:[^|]+(?:\|[^|]+){0,2})?$
Run Code Online (Sandbox Code Playgroud)

这将匹配空字符串或最多三个管道分隔的项目,其中项目可以是管道以外的任何字符.在这种模式中,每个项目至少需要一个字符; 如果要允许空白项目,请将+s 更改为*s.

如果要更改允许的项目数的上限,请更改{0,2}{0,max-1},max您希望的限制在哪里(因为您max - 1的字符串中最多将包含管道以使其有效).