function isUSD(str) {
// 判断是否有小数点 截取小数点前的整数部分,并以“,”拆分为数组
let arr;
if (str.includes(".") && str.includes(",")) {
// 有小数点就从小数点拆分
arr = str.slice(0, str.indexOf(".")).split(",");
}
if (!str.includes(".") && str.includes(",")) {
arr = str.split(",");
}
if (!str.includes(".") && !str.includes(",")) {
arr = [str];
}
if (str.includes(".") && !str.includes(",")) {
arr = [str.slice(0, str.indexOf("."))];
}
//
console.log(arr);
// 判断是否大于三位数,例如$132.03
let isA;
let isB;
if (arr.length <= 1) {
isA = arr.every(
(item) =>
item.slice(0, 1) === "$" &&
(item.length === 2 || item.length === 3 || item.length === 4) &&
typeof +item.slice(1) === "number" &&
!isNaN(+item.slice(1))
);
} else {
// 根据条件返回前面整数部分是否为合法格式
isA = arr.every((item, index) => {
if (index === 0) {
// 当为第一项时,判断长度时2或者3,并且第一项是否为$,后面是否为数字,或者是否为非NaN
return (
item.slice(0, 1) === "$" &&
(item.length === 2 || item.length === 3 || item.length === 4) &&
typeof +item.slice(1) === "number" &&
!isNaN(+item.slice(1))
);
} else {
// 当为其他项时只需要判断长度和类型即可
return (
item.length === 3 && typeof +item === "number" && !isNaN(+item)
);
}
});
}
if (str.includes(".")) {
isB =
str.slice(str.indexOf(".")).length === 3 &&
typeof +str.slice(str.indexOf(".") + 1) === "number" &&
!isNaN(+str.slice(str.indexOf(".") + 1));
// 小数点后面的部分,必须为两位数字,带小数点必须为三位,最后再同理判断类型
return isA && isB;
} else {
return isA;
}
}