判断是否符合 USD 格式
不会用正则表达式,所以根据自己的理解写了一个题解

function isUSD(str) {
    var arr = []
    if (str[0] !== "$") return false
    if (str[1] === "," || str[1] === ".") return false
    if (str.indexOf(".") === str.length-3) {
        for (var i=0;i<=str.length-4;i++) {
            if (str[i] === ",") {
                arr.push(str.indexOf(",",i))
            }
        }
        return del()
    } else if (str.indexOf(".") === -1 ) {
        for (var i=0;i<=str.length-1;i++) {
            if (str[i] === ",") {
                arr.push(str.indexOf(",",i))
            }
        }
        return del()
    } else {
        return false
    } //主体部分,分为有无小数点的判断
    function del() {   // 用作判断的函数
        var index = str.indexOf(".")
        if (arr.length === 0) {
                if (index === -1 && str.length <= 4) {
                    return true
                } else if (index === str.length-3 && str.length <= 7) {
                    return true
                } else {
                    return false
                }
            } else if (arr.length === 1) {
                 if (index === -1 && arr[0] - str.length+1 === -3 && str.length <= 8) {
                    return true
                } else if (index === str.length-3 && arr[0] - str.length+4 === -3 && str.length <= 11) {
                    return true
                } else {
                    return false
                }
            }
        // 这一段写USD中逗号个数为0,1时进行单独处理

            if (index === -1 && arr[arr.length-1]-str.length+1 === -3 && 1 - arr[0] >= -3) {
                // console.log("开头结尾判断-1正确")
                for (var i=0;i<arr.length-1;i++) {
                    if (arr[i] - arr[i+1] !== -4) return false
                }
                return true
            } else if (index !== -1 && arr[arr.length-1]-str.length+4 === -3 && 1 - arr[0] >= -3) {
                // console.log("开头结尾判断!-1正确")
                 for (var i=0;i<arr.length-1;i++) {
                    if (arr[i] - arr[i+1] !== -4) return false
                }
                return true                                                           
            } else {
                return false
            }
    }
}

运算的时间是1300ms,有值得优化的地方,欢迎指出不足。