1.格式化
想实现每四位增加一个空格
在数据源添加一个变量fixed 默认值为false
在onChange里写入如下代码
export function onChange({ value }) {//防止循环调用if(!this.state.fixed){this.state.fixed = truethis.$('textField_kxa49qkh').setValue(value.replace(/\D/g, '').replace(/....(?!$)/g, '$& '))this.state.fixed = false}}
2.自定义校验
自定义校验银行卡号是否正确
在自定义函数中输入如下函数
新代码
百度百科的Luhn算法中的代码 优秀啊
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 = 0for (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 = 0for (const index in reverseStr) {let num = parseInt(reverseStr[index])if (index % 2 === 0) {// 奇数位num = num * 2if (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}
