Regex,最多5位小数,用+分隔



我正在尝试制作一个regex添加到输入模式(HTML(中,以检查是否有效,只有当输入包含由十进制(逗号后有1或2个数字(或由+最多5个它不能以+开头或结尾,也不可能有一个带逗号的数字而后面没有数字(我用逗号代替小数点(

例如

  • 10+5,1+6,20OK
  • 10正常
  • 6+4+8,9+3+9+3
  • 10,2+4+6+
  • 10,+5

我试过这样的东西,但id不能很好地工作

((d{1,3}|(d*,d{1,2})*)+(+)?){1,5}

我也试过这个:

^((s*)|([0-9]d{0,9}(,d{1,2})?%?))*(+((s*)|([0-9]d{0,9}(,d{1,2})?%?))+){0,4}$

但它不能很好地与小数点和结束+的2位最大值配合使用

有什么建议吗??

我在这里做了一些测试:https://regexr.com/5jsfv

它应该通过前3个,并在最后4个上失败

感谢

您可以使用

^d+(?:,d{1,2})?(?:+d+(?:,d{1,2})?){0,4}$

在HTML模式属性中,将其用作

pattern="d+(?:,d{1,2})?(?:+d+(?:,d{1,2})?){0,4}"

请参阅regex演示。

注意:如果要将整数部分的位数限制为最大3,请将d+替换为d{1,3}:

^d{1,3}(?:,d{1,2})?(?:+d{1,3}(?:,d{1,2})?){0,4}$

详细信息

  • ^-字符串的开头(隐含在pattern正则表达式中(
  • d+(?:,d{1,2})?-一个或多个数字,然后是,和一个或两个数字的可选序列
  • (?:+d+(?:,d{1,2})?){0,4}-零到四次出现+字符,后面跟着一个或多个数字,然后是,和一个或两个数字的可选序列
  • $-字符串结尾(隐含在pattern正则表达式中(

最新更新