正则表达式2位数用逗号分隔,并非全部都需要

时间:2009-10-12 09:28:51

标签: regex

我需要一个正则表达式来输入以下内容:

  

[2位],逗号,[两位数],逗号,[两位数]

2位数字不能以0开头。只允许输入前2位数字。或输入前2位数字,然后输入逗号en接下来的2位数字。或者输入如上所述的完整字符串。

有效输入为:

  

10
  99个
  17,56
  15,99
  10,57,61
  32,44,99

有人可以帮我解决这个正则表达式吗?

目前我有这个正则表达式,但它不会将输入限制为最多3组2位数:

^\d{2}(?:[,]\d{2})*$

2 个答案:

答案 0 :(得分:13)

^[1-9]\d(?:,[1-9]\d){0,2}$

第一部分([1-9]\d)只是第一个数字,必须始终存在。它由非零数字和任意第二个数字(\d)组成。

以下是非捕获组((?:...)),其中包含逗号后跟另一个两位数字(,[1-9]\d),与第一个相同。这个组可以重复0到2次({0,2}),因此你可以得到一个逗号和另一个数字的一​​个或两个序列。

您可以轻松地扩展花括号中的部分以允许更多允许的数字。

答案 1 :(得分:1)

^[1-9]\d([,][1-9]\d){0,2}$