看到这个题我想到正则,但是不太精,就先想到了传统方法,欢迎大家交流讨论
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) }) }