【问题标题】:Regex validation for numbers with comma separator带有逗号分隔符的数字的正则表达式验证
【发布时间】:2011-03-28 05:25:47
【问题描述】:

需要一个正则表达式来验证带有逗号分隔符的数字。 1,5,10,55 有效,但 1,,,,10 无效。

【问题讨论】:

  • 附带说明 - 正则表达式可以验证您的输入,但不能解析它(除非您 match\d+)。如果您的下一步是拆分字符串,您最好在验证之前拆分它。接下来,jQuery 适合什么地方呢?它是一个验证插件吗?
  • 是的,我想使用 jquery 验证插件来验证一个字符串。

标签: jquery regex validation


【解决方案1】:

应该这样做:

^\d+(,\d+)*$

正则表达式相当简单:\d+ 是第一个数字,后面是可选的逗号和更多数字。

您可能想在您认为合适的地方输入\s*,或在验证之前删除所有空格。

  • 要允许负数将\d+ 替换为[+-]?\d+
  • 要允许分数:将\d+ 替换为[+-]?\d+(?:\.\d+)?

【讨论】:

    【解决方案2】:

    以下是我们将要使用的正则表达式的组件:

    • \d 是数字字符类的简写
    • + 是一个或多个重复说明符
    • * 是零个或多个重复说明符
    • (...) 进行分组
    • ^$ 分别是行锚的开始和结束

    我们现在可以编写我们需要的正则表达式了:

    ^\d+(,\d+)*$
    

    即:

    from beginning...
    |    ...to the end
    |          |
    ^\d+(,\d+)*$              i.e. ^num(,num)*$
     \_/  \_/ 
     num  num
    

    请注意,* 表示只允许一个数字。如果您坚持使用至少两个数字,请改用+。您还可以将 \d+ 替换为另一个模式以允许数字,例如符号和/或小数部分。

    参考文献


    高级主题:优化

    您可以选择使括号不捕获以提高性能:

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

    如果风格支持它,你可以在这种情况下使所有重复占有

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

    参考文献

    【讨论】:

      【解决方案3】:
      ^[0-9]*(,){1}[0-9]*/
      

      试试这个

      【讨论】:

      • 好吧,{1} 是多余的,捕获组也是如此。这与\d*,\d* 相同 - 它必须有一个逗号,周围有可选数字;不完全是这里的要求。它接受,12,34,34,拒绝11,2,3
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多