MySQL插入前JS小数正则验证问题:正负号单独通过校验
修正JavaScript正则验证MySQL decimal(7,2)类型的问题
原正则^[+-]?\d{0,5}(?:\.\d{0,2})?$的问题在于允许单独输入+或-,这不符合decimal(7,2)的有效值要求。以下是修正后的正则及说明:
修正后的正则
^[+-]?(?:\d{1,5}(?:\.\d{0,2})?|\.\d{1,2})$
正则逻辑说明
[+-]?:可选的正负号,仅当后面跟有效数字时才合法- 核心部分分为两种合法情况(用
|分隔):\d{1,5}(?:\.\d{0,2})?:1-5位整数,后面可选择带小数点和0-2位小数(覆盖1、11111、1.、1.11、+1、-11111.11这类值)\.\d{1,2}:小数点开头,后面跟1-2位小数(覆盖.1、.11、+.1、-.1这类值)
验证匹配情况
有效值全部匹配
-1、+1、1、+.1、-.1、.1、+11111.11、-11111.11、11.11、11111、+1.、-1.、1.
无效值全部不匹配
1111111(整数部分超过5位)、11.11111(小数部分超过2位)、0.111111(小数部分超过2位)、.1111111(小数部分超过2位)、+111111.11(整数部分超过5位)、-111111.11(整数部分超过5位)、+11111.111(小数部分超过2位)、-11111.111(小数部分超过2位)、11111.111(小数部分超过2位)、111111.11(整数部分超过5位)、-、+(单独正负号)
内容的提问来源于stack exchange,提问作者navig8tr
相关产品推荐
相关产品推荐

