前端过滤特殊字符、表情包

本文介绍了在前端开发中如何过滤和验证用户输入,包括移除表情包、限制特殊字符输入以及禁止输入空格的实现方法,确保输入数据的规范性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

过滤表情包

过滤表情包:

 filters: {
    filterName(val) { // 判断有没有表情 有表情就去掉
      const emojiReg = /(\ud83c[\udf00-\udfff])|(\ud83d[\udc00-\ude4f])|(\ud83d[\ude80-\udeff])/g
      let names = val
      const isEmoj = emojiReg.test(names)
      isEmoj && (names = names.replace(emojiReg, ''))
      if (names.length === 2) {
        return names.slice(0, 1) + '*'
      } else if (names.length > 2) {
        let str = ''
        for (let i = 0; i < names.length - 2; i++) {
          str += '*'
        }
        return names.slice(0, 1) + str + names.slice(names.length - 1, names.length)
      } else if (names.length === 0 || names.length === 1) {
        return val
      } else {
        return names
      }
    }
  },


过滤特殊字符

// 限制输入特殊字符
    btKeyUp(e) {
      e.target.value = e.target.value.replace(/[`~!@#$%^&*()⊙⊙_\-+=<>?:"{}|,.\/;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘',。、]/g,"");
    },

注意:这里需要在input中绑定,如下:

<el-input size="small" v-model="city" placeholder="请输入城市名称" @keyup.native="btKeyUp"></el-input>

禁止输入空格

<el-input  onkeyup="this.value=this.value.replace(/[, ]/g,'')" ></el-input>
### 前端处理特殊字符的方法 在前端开发过程中,对于URL参数中的特殊符号(如`+`号、`=`, `/`等),通常会遇到浏览器自动编码或解码的情况。为了确保这些特殊字符能够被正确传递到服务器端而不引起误解,可以采用JavaScript内置函数encodeURIComponent来对整个查询字符串进行编码[^1]。 当涉及到更广泛的场景下需要过滤某些特定类型的字符时,则可以通过编写自定义的正则表达式来进行匹配并移除不想要的内容。例如,在表单验证环节中防止用户提交非法输入或是清理来自第三方API的数据前去除潜在危险标记: ```javascript // 检查输入值是否包含表情符号 function checkEmoji(inputValue){ const emojiPattern = /[\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]]/; const hasEmoji = emojiPattern.test(inputValue); console.log('是否包含表情符号:', hasEmoji); } // 过滤特殊符号 function checkSymbol(inputValue){ console.log('正在检测特殊符号...'); const specialSymbol = /[\\`~!@#$%^&*()+=|{}\[\]:;',<>/?.]/; const cleanedInput = inputValue.replace(specialSymbol, ''); console.log('已清除特殊符号后的文本:',cleanedInput ); } ``` 针对HTML实体字符(像小于号 `<` 和大于号 `>` 的转义形式)以及其他非ASCII字符集成员,也可以利用replace方法配合相应的模式串实现转换操作。下面给出了一组用于将几个常见HTML实体还原成其原始含义的例子[^3]: ```javascript var str = "Hello & Welcome to my website!"; str = str.replace(/&/g, "&"); console.log(str); str = "This is a test string with plus sign +"; str = str.replace(/\+/g,"%2B"); console.log(str); str="A link containing hash symbol #section"; str=str.replace(/\#/g,"%23"); console.log(str); ``` 最后一种情况是在准备向后端发送JSON对象作为请求体的一部分之前,可能还需要考虑如何妥善处理其中嵌套结构里可能出现的各种复杂字符组合。此时可借助于StringFn这样的辅助工具函数遍历目标对象树并对每一片叶节点执行必要的转义措施[^4]: ```javascript const obj={ name1:"sfgg<'dagsdf", test:['123',345], testObj:{ name1:'我Ija>发吧撒"酒疯', test:['一个测试数据',3454535] } }; function StringFn(data) { let result=''; (function recurse(currentData) { if(typeof currentData === 'string'){ result += currentData. replace(/[<>"]/g,function(match){ switch(match){ case '<': return '\\'+match; case '>': return '\\'+match; default: return '\\"'; } })+' '; }else if(Array.isArray(currentData)){ for(let item of currentData){ recurse(item); } } else{ for(let key in currentData){ recurse(currentData[key]); } } })(data); return result.trim(); } console.log(StringFn(obj)); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值