JS常用功能和API记录

105 阅读1分钟

包含以下功能模块:1.表情符正则校验 2.特殊字符正则校验 3.比较两个日期大小 4.获取页面浏览器地址的参数 5.utf-8转十六进制编码

1:表情符正则:

const emojiReg = /[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/ig;

// 宣言正则不可输入表情符号

 if (this.message.match(emojiReg)) {

        this.$toast('不能输入非法字符,请检查!')

        return

      }

2:特殊字符:

const scReg = /[`!@#$%^&*()_-+=<>?:"{}|,./;'\[]·!@#¥%……&*()——-+={}|《》?:“”【】、;‘',。、]/im;

 if (this.message.match(scReg )) {

        this.$toast('不能输入非法字符,请检查!')

        return

      }

参考文献:zhuanlan.zhihu.com/p/608482587

3:比较两个日期字符串的大小

 // endTime截止时间字符串

 const data1 = new Date(this.issueObj.endTime) 

 const data2 = new Date(this.issueDoubleObj.endTime)

 return data1.getTime() > data2.getTime() ? false : true

或者

使用 new Date(this.endTime).getTime() <= new Date().getTime() 和当前时间比较时间大小

4:获取页面浏览器地址的参数

方法一:

let jsonStr = window.location.hash.slice(1).split('=')[1]    // 获取取浏览器传过来订单编号

var jsonObj = decodeURIComponent(jsonStr)

var url = JSON.parse(jsonObj)

this.dataObj = url

注:dataObj 为传递过来的obj对象

方法二:

const url = 'https://medium.com?name=fatfish&age=100'
console.log('url===')
console.log(this.getAllQueryParams(url))

getAllQueryParams(url) {
  const searchParams = new URL(url).searchParams
  return Object.fromEntries(searchParams.entries())
},

传参跳转的页面设置:

      // 跨域传参

      let jsonObj = {

        ids: item.ids,

        saleNo: item.saleNo,

      }

      let orderObj = JSON.stringify(jsonObj)

      let params = encodeURIComponent(orderObj)

      // 当前网页窗口打开外部连接

      window.location.href = 'http://localhost:9021/#/serial?data=' + params

5:utf-8转十六进制编码(Hex)

  var totalAmountStr = printData.totalAmount + ''
  var totalAmountHex = ''
  for (var i = 0; i < totalAmountStr.length; i++) {
    if (totalAmountHex == '') totalAmountHex = totalAmountStr.charCodeAt(i).toString(16)
    else totalAmountHex += totalAmountStr.charCodeAt(i).toString(16)
  }
  
  

// 注:转换的字符是数字或者英文字母才可以用这方式

如果是中文字母转换十六进制 则需要借助表查询

中文转十六进制参考:blog.csdn.net/u013866683/…