• 前端全局工具函数utils.js/正则(持续更新)


    1. 接口返回提示

    1. // 接口返回提示
    2. requestCodeTips(code, msg) {
    3. // code错误码,msg提示信息
    4. let errorrMessage = ''
    5. switch (Number(code)) {
    6. case 400:
    7. errorrMessage = '错误请求'
    8. break;
    9. case 401:
    10. errorrMessage = '未授权,请重新登录'
    11. break;
    12. case 403:
    13. errorrMessage = '拒绝访问'
    14. break;
    15. case 404:
    16. errorrMessage = '请求错误,未找到该资源'
    17. break;
    18. case 405:
    19. errorrMessage = '请求方法未允许'
    20. break;
    21. case 408:
    22. errorrMessage = '请求超时'
    23. break;
    24. case 500:
    25. errorrMessage = '服务器端出错啦'
    26. break;
    27. case 501:
    28. errorrMessage = '网络未实现'
    29. break;
    30. case 502:
    31. errorrMessage = '网络错误'
    32. break;
    33. case 503:
    34. errorrMessage = '服务不可用'
    35. break;
    36. case 504:
    37. errorrMessage = '网络超时'
    38. break;
    39. case 505:
    40. errorrMessage = 'http版本不支持该请求'
    41. break;
    42. default:
    43. errorrMessage = '连接错误'
    44. }
    45. this.toast(0, `${code}-${errorrMessage}-${msg?msg:''}`)
    46. },

    2.全局文本/加载提示(uniapp/wxapp)

    1. data: {
    2. msg: null, // 消息提示
    3. time: 300, // 时间
    4. hideLoadTimes: null, // 清除加载中的定时器
    5. showToastTimes: null, // 提示框的定时器
    6. },
    7. /**
    8. * * 提示信息
    9. * state: 类型 (0 提示框 1 showLoading 2 hideLoading )
    10. * title: 标题
    11. * duration: 时间
    12. * icon: 图标
    13. */
    14. async toast(state = 0, title = '', duration = 3000, icon = "none") {
    15. let errMsg = this.data.msg ? this.data.msg.errMsg : null
    16. if (state == 0) { //
    17. // 隐藏加载中的定时器还在
    18. if (this.data.hideLoadTimes || errMsg == 'showLoading:ok') {
    19. // 延后显示
    20. clearTimeout(this.data.showToastTimes)
    21. this.data.showToastTimes = setTimeout(async () => {
    22. this.data.msg = await uni.showToast({
    23. icon,
    24. title,
    25. duration,
    26. });
    27. this.data.showToastTimes = null
    28. }, this.data.time + 200)
    29. } else { // 隐藏加载中的定时器不能存在
    30. this.data.msg = await uni.showToast({
    31. icon,
    32. title,
    33. duration,
    34. });
    35. }
    36. } else if (state == 1) {
    37. this.data.time = this.data.time >= 900 ? 900 : this.data.time + 300
    38. this.data.msg = await uni.showLoading({
    39. title,
    40. mask: true
    41. });
    42. } else if (state == 2) {
    43. clearTimeout(this.data.hideLoadTimes)
    44. this.data.hideLoadTimes = setTimeout(async () => {
    45. this.data.msg = await uni.hideLoading();
    46. this.data.time = 300
    47. this.data.msg = null //
    48. this.data.hideLoadTimes = null
    49. }, this.data.time)
    50. }
    51. },

    3.生成随机字符串

    1. // 生成随机串
    2. randomString(len) {
    3. len = len || 32;
    4. var $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'; /****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/
    5. var maxPos = $chars.length;
    6. var pwd = '';
    7. for (let i = 0; i < len; i++) {
    8. pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
    9. }
    10. // console.log("pwd", pwd)
    11. return pwd;
    12. },

    4.获取年月日

    1. // 获取当前年月日
    2. getDate(type) {
    3. // year 获取年
    4. // YMD 获取年月日
    5. if (type == "year") {
    6. let date = new Date();
    7. return date.getFullYear() //获取完整的年份(4位)
    8. }
    9. let date = new Date();
    10. let sign2 = ":";
    11. let year = date.getFullYear() // 年
    12. let month = date.getMonth() + 1; // 月
    13. let day = date.getDate(); // 日
    14. let hour = date.getHours(); // 时
    15. let minutes = date.getMinutes(); // 分
    16. let seconds = date.getSeconds() //秒
    17. let weekArr = ['星期天', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
    18. let week = weekArr[date.getDay()]; //getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)
    19. // 给一位数的数据前面加 “0”
    20. if (month >= 1 && month <= 9) {
    21. month = "0" + month;
    22. }
    23. if (day >= 0 && day <= 9) {
    24. day = "0" + day;
    25. }
    26. if (hour >= 0 && hour <= 9) {
    27. hour = "0" + hour;
    28. }
    29. if (minutes >= 0 && minutes <= 9) {
    30. minutes = "0" + minutes;
    31. }
    32. if (seconds >= 0 && seconds <= 9) {
    33. seconds = "0" + seconds;
    34. }
    35. if (type == "YMD") { // 获取年月日
    36. // let date = new Date();
    37. return year + "-" + month + "-" + day
    38. }
    39. // console.log("---", year + "-" + month + "-" + day + " " + hour + sign2 + minutes + sign2 + seconds)
    40. return year + "-" + month + "-" + day + " " + hour + sign2 + minutes + sign2 + seconds;
    41. // // 需要自取,自行配置
    42. // let date = new Date();
    43. // date.getYear(); //获取当前年份(2位)
    44. // date.getFullYear(); //获取完整的年份(4位)
    45. // date.getMonth(); //获取当前月份(0-11,0代表1月)
    46. // date.getDate(); //获取当前日(1-31)
    47. // date.getDay(); //获取当前星期X(0-6,0代表星期天)
    48. // date.getTime(); //获取当前时间(从1970.1.1开始的毫秒数)
    49. // date.getHours(); //获取当前小时数(0-23)
    50. // date.getMinutes(); //获取当前分钟数(0-59)
    51. // date.getSeconds(); //获取当前秒数(0-59)
    52. // date.getMilliseconds(); //获取当前毫秒数(0-999)
    53. // date.toLocaleDateString(); //获取当前日期
    54. // let mytime = date.toLocaleTimeString(); //获取当前时间
    55. // date.toLocaleString(); //获取日期与时间
    56. // // 获取当前月份
    57. // let nowMonth = date.getMonth() + 1;
    58. // // 获取当前是几号
    59. // let strDate = date.getDate();
    60. // // 添加分隔符“-”
    61. // let seperator = "-";
    62. // // 对月份进行处理,1-9月在前面添加一个“0”
    63. // if (nowMonth >= 1 && nowMonth <= 9) {
    64. // nowMonth = "0" + nowMonth;
    65. // }
    66. // // 对月份进行处理,1-9号在前面添加一个“0”
    67. // if (strDate >= 0 && strDate <= 9) {
    68. // strDate = "0" + strDate;
    69. // }
    70. // // 最后拼接字符串,得到一个格式为(yyyy-MM-dd)的日期
    71. // let nowDate = date.getFullYear() + seperator + nowMonth + seperator + strDate;
    72. // // 获取的是前一天日期
    73. // let time = (new Date).getTime() - 24 * 60 * 60 * 1000;
    74. // let yesday = new Date(time); // 获取的是前一天日期
    75. // console.log("mytime--",mytime)
    76. // console.log("nowDate",nowDate)
    77. // console.log("time",time)
    78. // console.log("yesday",yesday)
    79. // return yesday
    80. },

    4.经纬度距离计算

    1. // 经纬度距离计算
    2. /**
    3. * 计算地球上任意两点(经纬度)距离
    4. *
    5. * @param long1 第一点经度
    6. * @param lat1 第一点纬度
    7. * @param long2 第二点经度
    8. * @param lat2 第二点纬度
    9. * @return 返回距离 单位:米
    10. */
    11. distanceByLongNLat(long1, lat1, long2, lat2) {
    12. let a, b, R;
    13. R = 6378137; //地球半径
    14. lat1 = lat1 * Math.PI / 180.0;
    15. lat2 = lat2 * Math.PI / 180.0;
    16. a = lat1 - lat2;
    17. b = (long1 - long2) * Math.PI / 180.0;
    18. let d;
    19. let sa2, sb2;
    20. sa2 = Math.sin(a / 2.0);
    21. sb2 = Math.sin(b / 2.0);
    22. d = 2 * R * Math.asin(Math.sqrt(sa2 * sa2 + Math.cos(lat1) * Math.cos(lat2) * sb2 * sb2));
    23. return d;
    24. },

    5.文件格式

    1. // 附件 格式
    2. getFileFormat(value) {
    3. return value == "mp4" || value == "flv" || value == "f4v" || value == "webm" ||
    4. value == "m4v" || value == "MOV" || value == "3gp" || value == "3g2" || value == "avi" ||
    5. value == "rmvb" ? value : "I"
    6. },

    6.正则相关

    1.手机号判断

    1. // 判断是不是手机号
    2. isMobile(data) {
    3. return data && data.length == 11 &&
    4. /^(((13[0-9]{1})|(14[0-9]{1})|(15[0-9]{1})|(16[0-9]{1})|(17[0-9]{1})|(18[0-9]{1})|(19[0-9]{1})|)+\d{8})$/
    5. .test(data)
    6. },

    2.手机号加星

    1. // 手机号加星
    2. mobileAddStar(data) {
    3. let str = data && typeof data == 'string' ? data.substr(0, 3) + '****' + data.substr(7) : ''
    4. return str
    5. },

    3. 1-6位数字,支持两位小数

    // 1-6位数字,支持两位小数
    // /^(?!(\d{7}|[0-9]{1,6}\.\d{3,}))(?=.*[1-9])\d{0,6}(\.\d{1,2})?$/

    4.金额校验(大于等于零的两位小数或整数  不能超过亿)

    1. // 金额校验 大于等于零的两位小数或整数 不能超过亿
    2. amountVerify(val, tit) {
    3. const str = /^([1-9]\d*|0)(\.\d{1,2})?$/
    4. if (!str.test(val)) {
    5. this.toast(0, `${tit}只能是大于等于零的两位小数或整数字!`)
    6. return false
    7. }
    8. let arr = (val + "").split('.')
    9. if ((arr[0] + "").length > 9) { // 长度超过限制
    10. this.toast(0, `${tit}位数超过限制,不能超过亿!`)
    11. return false
    12. }
    13. return true
    14. },

    5.年份校验 (大于零的整数  不能超过100)

    1. // 年份校验 大于零的整数 不能超过100
    2. yearVerify(val, tit) {
    3. const str = /^([1-9]\d*|0)?$/
    4. if (!str.test(val)) {
    5. this.toast(0, `${tit}只能是大于等于零的整数字!`)
    6. return false
    7. }
    8. let arr = (val + "").split('.')
    9. if ((arr[0] + "").length > 3 || (arr[0] * 1) > 999) { // 长度超过限制
    10. this.toast(0, `${tit}位数超过限制,不能大于999!`)
    11. return false
    12. }
    13. return true
    14. },

    6.银行卡号校验

    1. //校验银行卡号,银行卡校验规则(Luhn算法)
    2. validateBankNo(value) {
    3. // 银行账号是16-19位
    4. // 验证m-n位的数字:^\d{m,n}$
    5. if (value == "" || !this.isPositiveInteger(value)) {
    6. this.toast(0, `请输入正确的银行卡号,只能是16-19位的数字!`)
    7. return false;
    8. }
    9. const str = /^\d{16,19}$/
    10. if (!str.test(value)) {
    11. this.toast(0, `银行卡号只能是16-19位的数字!`)
    12. return false
    13. }
    14. return true
    15. if (value == "" || !this.isPositiveInteger(value)) return false;
    16. var wei = [],
    17. sumOdd = 0,
    18. sumEven = 0,
    19. length = value.length;
    20. for (var j = 0; j < length; j++) {
    21. wei[j] = parseInt(value.substring(length - j - 1, length - j)); // 从最末一位开始提取,每一位上的数值
    22. }
    23. for (var i = 0; i < length / 2; i++) {
    24. sumOdd += wei[2 * i];
    25. if (wei[2 * i + 1] * 2 > 9) wei[2 * i + 1] = wei[2 * i + 1] * 2 - 9;
    26. else wei[2 * i + 1] *= 2;
    27. sumEven += wei[2 * i + 1];
    28. }
    29. return (sumOdd + sumEven) % 10 == 0;
    30. },

    7.正整数

    1. //正整数
    2. isPositiveInteger(value) {
    3. return /^[1-9][0-9]*$/.test(value);
    4. },

    8.汉字带点校验

    1. // 汉字带点校验
    2. isStarChinese(value) {
    3. return /^[\u4E00-\u9FA5]{2,8}([\u25CF\u00B7][\u4E00-\u9FA5]{2,8})*$/.test(value)
    4. },

    9.纯汉字校验

    1. // 纯汉字校验
    2. isChinese(value) {
    3. return /^([\u4e00-\u9fa5]{2,8})$/gi.test(value)
    4. },

    10.带生僻字

    1. // 带生僻字
    2. isChineseTwo(value) {
    3. return /^[\u9FA6-\u9FCB\u3400-\u4DB5\u4E00-\u9FA5]{2,5}([\u25CF\u00B7][\u9FA6-\u9FCB\u3400-\u4DB5\u4E00-\u9FA5]{2,5})*$/gi
    4. .test(value);
    5. },

  • 相关阅读:
    Android 内容提供者和内容观察者:数据共享和实时更新的完美组合
    【STM32】【HAL库】【实用制作】数控收音机(硬件设计)
    JavaScript问题清单与经验
    LeetCode-82. 删除排序链表中的重复元素 II-Java-medium
    国庆中秋特辑(四)MySQL如何性能调优?上篇
    nlp入门(二) :商品信息可视化与文本分析实战
    设计模式:工厂方法模式
    动手学深度学习——Windows下的环境安装流程(一步一步安装,图文并配)
    弘玑Cyclone荣登2022「Cloud 100 China」榜单
    CMake高级用法实例分析(学习paddle官方的CMakeLists)
  • 原文地址:https://blog.csdn.net/weixin_57844432/article/details/133696002