正则表达重复?

时间:2010-08-10 12:43:35

标签: c# regex

我需要一个只接受数字和点的正则表达式,具有以下条件:

    数字三之间的
  1. 必须只有一个点'132.632.55'
  2. 数字可以在两个点之间重复'.112234563456789。'
  3. 字符串以数字
  4. 开头
  5. 带“。”的数字。喜欢这个'123346547987。'可以重复多次
  6. 这些数字的长度小于50个字符
  7. 例如:123456.258469.5467.15546

2 个答案:

答案 0 :(得分:5)

鉴于问题中的所有信息,我认为这是您需要的正则表达式:

^(\d{1,50}\.)*\d{1,50}$

这将:

  • 要求字符串以数字开头和结尾
  • 要求所有
  • 都有一个点
  • 确保点之间的每次数字运行不超过50位

如果您需要至少有一个点,请将*更改为+

^(\d{1,50}\.)+\d{1,50}$

答案 1 :(得分:1)

从我的要求中可以看出,你需要这样的东西:

^(\d{1,50}\.)*\d{1,50}$

即,从1到50位数字,可选地前面有任意数量的1到50位数组,每组后跟一个完整停止。我不能确定你是否希望1233.456这样的东西无效,因为你的要求#2暗示只有点之间的数字组可以包含重复数字。在这种情况下,事后对单个数字组进行验证会更加简单。