代码之家  ›  专栏  ›  技术社区  ›  Rev

带重复的正则表达式?

  •  2
  • Rev  · 技术社区  · 15 年前

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

    1. 三位数之间只能有一个点'132.632.55'
    2. 字符串以数字开头
    3. 带有“.”的数字,如“123346547987”。可以重复多次
    4. 这些数字的长度小于50个字符

    例如: 123456.258469.5467.15546

    2 回复  |  直到 15 年前
        1
  •  5
  •   Timwi    15 年前

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

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

    这将:

    • 要求字符串以数字开头和结尾
    • 要求里面有个点
    • 确保每个点之间的数字不超过50位

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

    ^(\d{1,50}\.)+\d{1,50}$
    
        2
  •  1
  •   Jon Purdy    15 年前

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

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

    也就是说,从1到50个数字,可以选择前面有1到50个数字的任意数量的组,每个组后面都有一个句号。我不太清楚你是否想要这样的东西 1233.456 无效,因为您的要求#2意味着只有点之间的数字组才能包含重复的数字。在这种情况下,事后对单个数字组进行验证要简单得多。