1.格式化

想实现每四位增加一个空格

在数据源添加一个变量fixed 默认值false

onChange里写入如下代码

export function onChange({ value }) {
  //防止循环调用
  if(!this.state.fixed){
    this.state.fixed = true
    this.$('textField_kxa49qkh').setValue(value.replace(/\D/g, '').replace(/....(?!$)/g, '$& '))
    this.state.fixed = false
  }
}

2.自定义校验

自定义校验银行卡号是否正确

在自定义函数中输入如下函数

function luhn(num) {
    // 去除空格
    num = (num + '').replace(/\D+/g, '')
    const regExp = /^([1-9])(\d{15}|\d{18})$/
    // 校验非0开始及长度
    if (!regExp.test(num)) {
        return false
    }
    num = num.split('').reverse();
    let total = 0
    for (let i = 0; i < num.length; i++) {
        num[i] = parseInt(num[i]);
        total += i % 2 ? 2 * num[i] - (num[i] > 4 ? 9 : 0) : num[i];
    }
    if (total === 0) {
        return false;
    }
    return (total % 10) === 0;
}
旧方法:


function luhnTest(bankNo) {
    //去除空格
    bankNo = bankNo.replace(/\s+/g, "")
    // 正则表达式匹配规则 1-9(不为0)开头,并且总共16位或19位
    const regExp = /^([1-9])(\d{15}|\d{18})$/
    if (!regExp.test(bankNo)) {
        return false
    }
    // 取最后一位
    const lastNum = parseInt(bankNo.substr(bankNo.length - 1, 1))
    const elseStr = bankNo.substr(0, bankNo.length - 1)
    // 其他位数反转顺序
    const reverseStr = elseStr.split('').reverse().join('')
    let sumNum = 0
    for (const index in reverseStr) {
        let num = parseInt(reverseStr[index])
        if (index % 2 === 0) {
            // 奇数位
            num = num * 2
            if (num < 10) {
                sumNum += num
            } else {
                // 加上个位
                sumNum += num % 10
                // 加上十位
                sumNum += Math.floor(num / 10)
            }
        } else {
            // 偶数位
            sumNum += num
        }
    }
    // console.log(sumNum)
    //如果被10整除则校验通过
    return (sumNum + lastNum) % 10 === 0
}





点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部