正则表达式处理输入的小 demo

前言

日常积累,欢迎指正

export function formatAnswer(str) {
  const symbols = [
    //',', '。', '?', '!', ':', ';', '、', '~', '&', '@', '#',

    ',', '.', '?', '!', ':', ';', '.', '~', '&', '@', '#',

    ',', '。', '?', '!', ':', ';', '、', '~', '&', '@', '#'
  ]

  let strResult
  strResult = str.replace(/\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g, '') // Emoji表情
  strResult = strResult.replace(/\s+/g, '') // 空格
  strResult = strResult.replace(/<\/?.+?>/g, '') // 换行
  strResult = strResult.replace(/[\r\n]/g, '') // 换行
  strResult = strResult.toLowerCase()

  const halfSymbolsLength = symbols.length / 2
  for (let i = 0; i < halfSymbolsLength; i++) {
    const reg = new RegExp(`/${symbols[i]}`, 'g') // 防止 symbols[i] 为正则表达式中的特殊符号时导致的运行错误
    strResult = strResult.replace(reg, symbols[i + halfSymbolsLength])
  }
  return strResult
}

以上处理没有什么难度,唯一值得注意的代码如下:

const reg = new RegExp(symbols[i], 'g') // 优化前的写法
const reg = new RegExp(`/${symbols[i]}`, 'g') // 优化后的写法

优化后的写法是为了兼容 symbols 中存在正则表达式特殊符号的情况比如?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值