- 可以是整数
- 如果是小数,最多保留两位(可以只有一位小数)
- 金额小数不能是
0.00
或者0.0
- 金额要大于0
写了好久没写出来,求大佬们赐教。。。
例子🌰:
1 true
1.0 true
1.00 true
0.1 true
0.01 true
0 false
0.0 false
0.00 false
1.001 false
0.00
或者0.0
写了好久没写出来,求大佬们赐教。。。
例子🌰:
1 true
1.0 true
1.00 true
0.1 true
0.01 true
0 false
0.0 false
0.00 false
1.001 false
var reg = /^(?!0+\.0+$)\d+(\.\d{1,2})?$/
var arr = [
'0',
'0.0',
'0.00',
'1',
'1.00',
'1.0',
'0.01',
]
const d = arr.map(item => reg.test(item));
console.log(d)
必须是非负数字,不能是单独的0,如果整数位位数大于1的话,那么第一位不能为0,最后小数点位数小于等于2,且最后一位不能为0
/^(?!0(\d|$))\d+?(\.\d?[1-9])?$/
['-1', '0', '0.01', '0.10', '0.101', '1', '01', '10', '10.', '10.1', '10.10'].map(str => {
return /^(?!0(\d|$))\d+?(\.\d?[1-9])?$/.test(str)
})
// [false, false, true, false, false, true, false, true, false, true, false]
再给你补两个
1、/^(?!0+(\.0+)?$)\d+?(\.\d{1,2})?$/
必须是非负数字,不能是任何形式的0
['-1', '0', '0.00', '0.01', '0.10', '0.101', '1', '01', '10', '10.', '10.1', '10.10'].map(str => {
return /^(?!0+(\.0+)?$)\d+?(\.\d{1,2})?$/.test(str)
})
// [false, false, false, true, true, false, true, true, true, false, true, true]
2、/^(?!0\d*(\.0+)?$)\d+?(\.\d{1,2})?$/
必须是非负数字,不能是任何形式的0,如果整数位位数大于1的话,那么第一位不能为0
['-1', '0', '0.00', '0.01', '0.10', '0.101', '1', '01', '10', '10.', '10.1', '10.10'].map(str => {
return /^(?!0\d*(\.0+)?$)\d+?(\.\d{1,2})?$/.test(str)
})
// [false, false, false, true, true, false, true, false, true, false, true, true]
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
8 回答6.5k 阅读
2 回答4.3k 阅读✓ 已解决
2 回答854 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
正则
Test
解析
/^(?=.*[1-9])(?!0\d)\d+(\.\d{1,2})?$/
\d+(\.\d{1,2})?
: 比较直观,即匹配最多两位小数的数字字符串;(?!0\d)
: 要求字符整数部分不能以0
开头;(?=.*[1-9])
:要求字符串必须含有1-9
,即实现“金额要大于0”。了解正则位置匹配相关知识可以参考GitHub笔记RegExp