2010-08-10 106 views
2

我需要一个只接受数字和点正则表达式,这些条件:重复的正则表达式?

  1. 数字三者之间只能有一个点“132.632.55”
  2. 数字可以在两个点之间重复”。 112234563456789.”
  3. 该字符串以数字开头
  4. 带“”的数字。像这样'123346547987'。可以重复多次
  5. 长度的这些数字是小于50个字符

例如:123456.258469.5467.15546

+2

位数=号码,您可以互换使用它们。请澄清。 – quantumSoup 2010-08-10 12:46:30

+1

*这些数字的长度小于50个字符* - 是指一个数字(简单)运行的长度或整个字符串的长度的长度(最好在正则表达式之外完成?) – finnw 2010-08-10 12:47:48

回答

5

鉴于该问题的所有信息,我觉得这是你所需要的正则表达式:

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

这将:

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

不再如果你需要它至少有一个点,该*+改变:

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

伟大的你是正则表达式英雄。 – Rev 2010-08-10 15:05:06

1

从我可以从你的要求告诉,你想是这样的:

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

也就是说,从1到50位数字,可选地在任何数量的1到50位数的组之前,每组接着一个完整的停止。我无法确定您是否想要1233.456之类的内容无效,因为您的要求#2意味着只有点之间的数字组可以包含重复数字。在这种情况下,在事实之后执行单个数字组的验证会简单得多。

+0

修正并澄清。 @Timwi在我还在编辑时回答完全相同。 – 2010-08-10 13:10:24

+0

所以你从我那里得到了1票,你发出正确的答案! – Rev 2010-08-10 15:03:46