看到这个题我想到正则,但是不太精,就先想到了传统方法,欢迎大家交流讨论
function isUSD(str) {
// 判断第一位是不是$
if (str.slice(0,1) !== '$') return false;
//如果是小数=> 有点没有小数位或 有小数位值非数字或 有小数位长度不是2位 =>返false
if (str.split('.').length>1 && (!str.split('.')[1] || Number(str.split('.')[1]).toString() == 'NaN' || str.split('.')[1].length != 2)){
return false
}
// 判断,号分隔后的所得是否符合要求
return getStatus(str)
}
function getStatus(str) {
// 取到去掉$和小数位后以‘,’号分隔后的数组
let arr = str.slice(1,str.length).split('.')[0].split(',')
//遍历该数组,every方法如果有一项条件为false终止循环,并且返回false
return arr.every((item, i)=>{
// 所有项长度小于等于3并且长度大于零,如果不是第一项每一个项长度只能为3
return item.length <= 3 && item.length > 0 && (i !== 0 ? item.length == 3 : true)
})
}
京公网安备 11010502036488号