整理日常项目中常见的表单验证及过滤方法

数据过滤
  • 手机号码隐藏中间4位
  • 保留两位小数
  • 每三位逗号隔开,后面补两位小数,多用于金额数字
  • 银行尾号四位数
  • 数字金额转换为大写人民币汉字的方法
  • 获取Url携带的地址参数
  • 金额以元和万元为单位
  • 隐藏证件号
  • 用户姓名脱敏
  • 账号4位一空格
  • 字符全局替换
  • 日期格式化
数据验证
  • 手机号验证
  • 姓名校验
  • 密码必须为8-18位数,且包含大小写字母和特殊符号
  • 身份证号完整校验
  • 只能输入数字和字母
  • 校验特殊字符

数据过滤

//手机号码隐藏中间4位
phoneHideMiddle(val) {if (val) {return `${val.substring(0, 3)}****${val.substring(val.length - 4)}`}else {return "";}
}
//保留两位小数
keepTwoNum(val) {val = Number(val);return val.toFixed(2);
},
//每三位逗号隔开,后面补两位小数,多用于金额数字
floatThree(value) {// console.log(value)value = "" + value;if (!value) return '0.00';// var intPart = Number(value).toFixed(0); //获取整数部分var intPart = parseInt(Number(value));//获取整数部分// console.log('intPart',intPart)var intPartFormat = intPart.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,'); //将整数部分逢三一断// console.log('intPartFormat',intPartFormat)var floatPart = ".00"; //预定义小数部分var value2Array = value.split(".");//=2表示数据有小数位if (value2Array.length == 2) {floatPart = value2Array[1].toString(); //拿到小数部分// console.log('floatPart',floatPart)if (floatPart.length == 1) { //补0,实际上用不着return intPartFormat + "." + floatPart + '0';} else {return intPartFormat + "." + floatPart;}} else {return intPartFormat + floatPart;}
},
//银行尾号四位数
bankCardNumLastFour(val) {// val = Number(val);if (val) {return val.substring(val.length - 4);}
},
//数字金额转换为大写人民币汉字的方法
convertCurrency(money) {//汉字的数字var cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');//基本单位var cnIntRadice = new Array('', '拾', '佰', '仟');//对应整数部分扩展单位var cnIntUnits = new Array('', '万', '亿', '兆');//对应小数部分单位var cnDecUnits = new Array('角', '分', '毫', '厘');//整数金额时后面跟的字符var cnInteger = '整';//整型完以后的单位var cnIntLast = '元';//最大处理的数字var maxNum = 999999999999999.9999;//金额整数部分var integerNum;//金额小数部分var decimalNum;//输出的中文金额字符串var chineseStr = '';//分离金额后用的数组,预定义var parts;if (money == '') { return ''; }money = parseFloat(money);if (money >= maxNum) {//超出最大处理数字return '';}if (money == 0) {chineseStr = cnNums[0] + cnIntLast + cnInteger;return chineseStr;}//转换为字符串money = money.toString();if (money.indexOf('.') == -1) {integerNum = money;decimalNum = '';} else {parts = money.split('.');integerNum = parts[0];decimalNum = parts[1].substr(0, 4);}//获取整型部分转换if (parseInt(integerNum, 10) > 0) {var zeroCount = 0;var IntLen = integerNum.length;for (var i = 0; i < IntLen; i++) {var n = integerNum.substr(i, 1);var p = IntLen - i - 1;var q = p / 4;var m = p % 4;if (n == '0') {zeroCount++;} else {if (zeroCount > 0) {chineseStr += cnNums[0];}//归零zeroCount = 0;chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];}if (m == 0 && zeroCount < 4) {chineseStr += cnIntUnits[q];}}chineseStr += cnIntLast;}//小数部分if (decimalNum != '') {var decLen = decimalNum.length;for (var i = 0; i < decLen; i++) {var n = decimalNum.substr(i, 1);if (n != '0') {chineseStr += cnNums[Number(n)] + cnDecUnits[i];}}}if (chineseStr == '') {chineseStr += cnNums[0] + cnIntLast + cnInteger;} else if (decimalNum == '') {chineseStr += cnInteger;}return chineseStr;
},
//获取Url携带的地址参数
GetQueryString(name) {//index.html?token=9b68dd98306327bf&action=2var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");if (window.location.search != "") {var r = window.location.search.substr(1).match(reg);} else {if (window.location.hash.indexOf("?") > 0) {var tmp = window.location.hash.split("?");var r = tmp[1].match(reg);} else {var r = null;}}if (r != null) {return decodeURI(r[2]);}return null;
},
//金额以元和万元为单位
moneyConvert(num) {var newNum = Number(num);if (10000 <= newNum) {return (newNum / 10000) + '万元'} else {return newNum + '元'}
},
//隐藏证件号
certIdHide(val) {if (val) {var certId = val.substring(0, 1) + '****************' + val.substring(val.length - 1)return certId}
},
//用户姓名脱敏
userNameHide(val) {if (val) {let name;if (val.length < 3) {name = '*' + val.substring(val.length - 1)return name} else {name = val.substring(0, 1) + '*' + val.substring(val.length - 1)return name}}
},
//账号4位一空格
accountNumberSpace(val) {if (val) {return val.replace(/\s/g, "").replace(/\D/g, "").replace(/(\d{4})(?=\d)/g, "$1 ");}
}
//字符全局替换
res.data.content = res.data.content.replace(/\<img/gi, '<img style="max-width:100%;height:auto" ')
//日期格式化
function dateFormat(fmt, date) {let ret;const opt = {"Y+": date.getFullYear().toString(),        // 年"m+": (date.getMonth() + 1).toString(),     // 月"d+": date.getDate().toString(),            // 日"H+": date.getHours().toString(),           // 时"M+": date.getMinutes().toString(),         // 分"S+": date.getSeconds().toString()          // 秒// 有其他格式化字符需求可以继续添加,必须转化成字符串};for (let k in opt) {ret = new RegExp("(" + k + ")").exec(fmt);if (ret) {fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))};};return fmt;
}
...
let date = new Date()
dateFormat("YYYY-mm-dd HH:MM", date)

数据验证

// 手机号验证
isvalidPhone(str) {const reg = /^1\d{10}$/return reg.test(str)
},
//姓名校验
isUserName(name) {if (name && name.length > 1) {const reg = name.match(/^[\u4e00-\u9fa5]+$/)return Boolean(reg)}return false
},
//密码必须为8-18位数,且包含大小写字母和特殊符号
/^(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[!~@#$%^&*,\.])[0-9a-zA-Z!~@#$%^&*,\\.]{8,18}$/
//   * 身份证号完整校验
isvalidateIdnumber(value) {if (value.length == 18) {var Errors = new Array("验证通过!","身份证号码位数不对!","身份证号码出生日期超出范围或含有非法字符!","身份证号码校验错误!","身份证地区非法!");var area = {11: "北京",12: "天津",13: "河北",14: "山西",15: "内蒙古",21: "辽宁",22: "吉林",23: "黑龙江",31: "上海",32: "江苏",33: "浙江",34: "安徽",35: "福建",36: "江西",37: "山东",41: "河南",42: "湖北",43: "湖南",44: "广东",45: "广西",46: "海南",50: "重庆",51: "四川",52: "贵州",53: "云南",54: "西藏",61: "陕西",62: "甘肃",63: "青海",64: "宁夏",65: "新疆",71: "台湾",81: "香港",82: "澳门",91: "国外"};//身份证号码  idcardvar Y; //为身份证号码所有数字经过特定算法以后对11取余所得到的数值var JYM; //固定数值 校验码的计算中会用到var S; //身份证号码所有数字经过特定算法以后所得到的值var M; //校验位数值var idcard_array = value.split("");var ereg;//console.log(idcard_array);//地区检验if (area[parseInt(value.substr(0, 2))] == null) {// $.fn.validatebox.defaults.rules.IDNumber.message = Errors[4];console.log(Errors[4]);return false;}if (parseInt(value.substr(6, 4)) % 4 == 0 || (parseInt(value.substr(6, 4)) % 100 == 0 && parseInt(value.substr(6, 4)) % 4 == 0)) {ereg = /^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;//闰年出生日期的合法性正则表达式} else {ereg = /^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正则表达式}if (ereg.test(value)) { //测试出生日期的合法性//计算校验位S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7 +(parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9 +(parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10 +(parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5 +(parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8 +(parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4 +(parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2 +parseInt(idcard_array[7]) * 1 +parseInt(idcard_array[8]) * 6 +parseInt(idcard_array[9]) * 3;Y = S % 11;M = "F";JYM = "10X98765432";M = JYM.substr(Y, 1); //判断校验位 身份证最后一位为校验位 如果身份证号码正确 则最后一位会与M值相同if (M == idcard_array[17]) {return true;} else {console.log(Errors[3]);return false;}} else {console.log(Errors[3]);return false;}} else {console.log("身份证号码长度不对");return false;}
},
//只能输入数字和字母
isvalidateLetterAndNum(str) {const reg = /^[0-9a-zA-Z]+$/;console.log(reg.test(str));return reg.test(str)
},
// 校验特殊字符
isSpecialChars(str) {var regEn = /[`~!@#$%^&*()_+<>?:"{},.\/;'[\]]/im;var regCn = /[·!#¥(——):;“”‘、,|《。》?、【】[\]]/im;console.log(regEn.test(str))if (regEn.test(str) || regCn.test(str)) {return false} else {return true}
}

Js 常用规则校验及过滤方法相关推荐

  1. 第60天:js常用访问CSS属性的方法

    一. js 常用访问CSS 属性的方法 我们访问得到css 属性,比较常用的有两种: 1. 利用点语法  box.style.width      box.style.top     点语法可以得到 ...

  2. JS 常用字符串数组遍历函数方法整理

    目录 一.concat() 二.join() 三.push() 四.pop() 五.shift() 六.unshift() 七.slice() 九.substring() 和 substr() 十.s ...

  3. js 常用正则校验(身份证/手机号/姓名...)

    //身份证校验 const IDReg = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|3 ...

  4. js常用的2中排序方法:冒泡排序和快速排序

    冒泡排序:例如9 4 5 6 8 3 2 7 10 1 首先:9和4比较  4放前   4 9 5 6 8 3 2 7 10 1 4和5比较   4不动   4 9 5 6 8 3 2 7 10 1 ...

  5. js常用取整 取余方法

    parseInt(a/b)            向下取整,用的最多 Math.ceil(a/b)           向上取整 Math.floor(a/b)         向下取整 Math.r ...

  6. php 采集 过滤,dedecms采集过滤规则 万能采集过滤代码 常用过滤

    织梦dedecms自带的采集系统确实很不错,可以免去一些手工添加信息的麻烦,设置一下dede采集规则.采集点,然后点采集,OK,几百篇文章就搞定了! 呵呵,确实很省事的!下面介绍几种常用采集规则的过滤 ...

  7. 前端JS常用工具方法

    前端JS常用工具方法 // var ua = window.navigator.userAgent.toLowerCase(); /*** 前端JS常用工具方法* @class Tools*/ exp ...

  8. vue验证整数_前端Vue中常用rules校验规则

    前端Vue中常用rules校验规则 1.是否合法IP地址 export function validateIP(rule, value,callback) {if(value==''||value== ...

  9. tcpdump常用与高级过滤方法整理

    1.命令格式 tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ][ -i 网络接口 ] [ -r 文件名] [ -s snaplen ] [ -T 类型 ...

最新文章

  1. QT中关于头文件一个很奇怪的问题
  2. 实例 18错误输出信息与调试信息
  3. JZOJ 5373. 【NOIP2017提高A组模拟9.17】信仰是为了虚无之人
  4. 手机自动化测试:appium源码分析之bootstrap十二
  5. 移动端 c++ 开发_这 10 点值得移动端开发重点学习
  6. html 列表循环_python web开发:内置标签与过滤器/循环/条件判断
  7. 作业帮电脑版在线使用_互助作业帮PC版-互助作业帮电脑版下载 v4.5.8
  8. java个人支付系统(springboot)
  9. BUPT复试专题—最小距离查询(2013)
  10. 汇编语言王爽 实验七
  11. 彻底清理c盘空间,本人亲测有效--WinDirStat
  12. ADC前端电压跟随器和ADC相关参数之---分辨率和精度(INL和DNL)
  13. FlinkSql系列5之 Regular Join
  14. Mono.Cecil使用示例之给UnityEditor.dll中的ConsoleWindow添加双击委托
  15. Web学习第六天用html5表格标签做个人简历
  16. Ruby read JSON file
  17. 10 Java基础笔记-封装
  18. hansontable编辑器
  19. 考研复试问答(计算机组成原理部分)
  20. Javascript 新历转旧历|阳历转阴历|公历转农历算法代码

热门文章

  1. 2_STM32最小系统设计
  2. 毕业设计 STM32单片机智能手环 - 蓝牙手环 物联网
  3. 【AIOT】3.5 物联网传输协议介绍
  4. 如何去除win10此电脑(这台电脑)首页的六个文件夹?
  5. Godot Engine:Blender模型导入Godot自动生成的场景结构
  6. 2020年(2021届计算机保研)(北航、国防科大、信工所、上科大、武大、哈深、哈工本部)
  7. 1995年的一次访谈中,乔布斯谈到处于垄断地位的科技公司因为营销人员掌握了话语权,不再注重产品研发而衰败
  8. 我们该给世界留下些什么?——兼谈文艺复兴
  9. 写给理工科人看的乐理(五)调性
  10. IBM MQ通道接收端绑定步骤