2

正则表达式 (价格、金钱、费用等格式验证)

最近做到一个项目,产品提出了一个要求,费用小数点前保留6位,小数点后两位,且价格等数字还有个特性,首位在不是小数时不为零,在网上找了很多正则都不符合要求,所以自己研究了半天决定自己写一个,参考了网上的一些正则,自己写了一个,代码如下,觉得有帮助的的话,别忘了点个赞:

/^(?:0\.\d{0,1}[1-9]|(?!0)\d{1,6}(?:\.\d{0,1}[1-9])?)$/
开发时测试的代码
/**
* @Author yangjianmin
* @Create Time 2019/9/11
* @Description:   价格验证,正则(小数点前6位,小数点后2位)
*/
let pa=new RegExp(/^(?:0\.\d{0,1}[1-9]|(?!0)\d{1,6}(?:\.\d{0,1}[1-9])?)$/)
let csNUm='112.0001'
function cs(str){
 console.log(str,pa.test(str))
}
cs('22.22')
cs('22.02')
cs('22.0002')
cs('00222.222')
cs('222.22200')
cs('2220.2220')
cs('2e223.22')
cs('e222.22')
cs('22.22e')
cs('22.22')
cs('22.2e')
cs('022.22')
cs('12345678.12345678')
cs('12345678.12')
cs('345678.12345678')
cs('123456')
cs('1234567.1234567')
cs('123456.123456')
cs('123456.123')
cs('123456.12')
cs('12345.1234')
cs('12345.123')
cs('1234.1234')
cs('1234.12')
cs('12345678')
cs('123456.78')
cs('1234567')
cs('123456.7')
cs('123456')
cs('1234.56')
cs('12345')
cs('12.345')
cs('123.45')
cs('0.5')
cs('0.45')
cs('0.445')
cs('0.4445')
/*
22.22 true
22.02 true
22.0002 false
00222.222 false
222.22200 false
2220.2220 false
2e223.22 false
e222.22 false
22.22e false
22.22 true
22.2e false
022.22 false
12345678.12345678 false
12345678.12 false
345678.12345678 false
123456 true
1234567.1234567 false
123456.123456 false
123456.123 false
123456.12 true
12345.1234 false
12345.123 false
1234.1234 false
1234.12 true
12345678 false
123456.78 true
1234567 false
123456.7 true
123456 true
1234.56 true
12345 true
12.345 false
123.45 true
0.5 true
0.45 true
0.445 false
0.4445 false
*/


木易
197 声望0 粉丝

引用和评论

0 条评论