使用正则表达式重复模式匹配

哈格巴特·席琳

我正在尝试使用正则表达式验证输入。到目前为止,我所有的测试都失败了,而且由于我对正则表达式的经验有限,我认为有人可能会帮助我。

模式:数字可能是 “,” 数字)(可能是 ;

字符串不能以 ; 开头。并且不以 ; 结尾。数字可以单独或与

我的正则表达式(不工作):((\d)(,\d)?)(;?)问题是它似乎直到字符串结束才检查。可选部件也让我头疼。

更新:^[0-9]+(,[0-9])?(;[0-9]+(,[0-9])?)+$这似乎效果更好,但与个位数不匹配。

好的:

2,3;4,4;3,2

2,3

2

2,3;3;4,3

足够的:

2,3,,,,,

2,3asfafafa

;2,3

2,3;;3,4

2,3;3,4;

维克多·斯特里比尤夫

您的^[0-9]+(,[0-9])?(;[0-9]+(,[0-9])?)+$正则表达式匹配 1 个或多个数字,然后是,和 1 个数字的可选序列,然后是一个或多个类似序列。

您需要匹配零个或多个逗号分隔的数字:

^\d+(?:,\d+)?(?:;\d+(?:,\d+)?)*$
                              ^

查看正则表达式演示

现在,调整部分:

  • 如果只匹配一位数,请使用 ^\d(?:,\d)?(?:;\d(?:,\d)?)*$
  • 如果逗号分隔的数字对的第二个元素可以为空,则?在每个元素之后添加,\d(如果要匹配单个数字)或*(如果数字可以有多个数字):^\d(?:,\d?)?(?:;\d(?:,\d?)?)*$^\d+(?:,\d*)?(?:;\d+(?:,\d*)?)*$

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章