我正在尝试制作一个regex添加到输入模式(HTML(中,以检查是否有效,只有当输入包含由十进制(逗号后有1或2个数字(或由+最多5个它不能以+开头或结尾,也不可能有一个带逗号的数字而后面没有数字(我用逗号代替小数点(
例如
10+5,1+6,20
OK10
正常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
正则表达式中(