特殊字符和表情校验

简介: 开发的程序经过测试总是又奇奇怪怪的问题,譬如输入框输入了表情符号和特殊字符,这个时候我们把数据给了后台,后台报错了,那么我们就得做校验(虽然正常用户不会这么做。)那么整理了一下校验规则,把它贴出来,方便大家遇到的时候可以直接使用,以下是单独封装成一个js了通过,通过export导出

theme: juejin

highlight: atom-one-dark

开发的程序经过测试总是又奇奇怪怪的问题,譬如输入框输入了表情符号和特殊字符,这个时候我们把数据给了后台,后台报错了,那么我们就得做校验(虽然正常用户不会这么做。)那么整理了一下校验规则,把它贴出来,方便大家遇到的时候可以直接使用,以下是单独封装成一个js了通过,通过export导出

特殊字符和表情校验

// 是否是表情字符串
const isEmojiCharacter = function (substring) {
  if (!substring) return false;
  for (var i = 0; i < substring.length; i++) {
    var hs = substring.charCodeAt(i);
    if (0xd800 <= hs && hs <= 0xdbff) {
      if (substring.length > 1) {
        var ls = substring.charCodeAt(i + 1);
        var uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) + 0x10000;
        if (0x1d000 <= uc && uc <= 0x1f77f) {
          return true;
        }
      }
    } else if (substring.length > 1) {
      var ls = substring.charCodeAt(i + 1);
      if (ls == 0x20e3) {
        return true;
      }
    } else {
      if (0x2100 <= hs && hs <= 0x27ff) {
        return true;
      } else if (0x2B05 <= hs && hs <= 0x2b07) {
        return true;
      } else if (0x2934 <= hs && hs <= 0x2935) {
        return true;
      } else if (0x3297 <= hs && hs <= 0x3299) {
        return true;
      } else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030
        || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b
        || hs == 0x2b50) {
        return true;
      }
    }
  }
}
// 是否是特殊字符
const isSpecialCharacters = function (str) {
  if (!str) return false;
  var reg = /[~#^$@%&!?%*]/gi;
  return reg.test(str);
}

export {
    isEmojiCharacter,
    isSpecialCharacters
}
// 使用
import { isEmojiCharacter, isSpecialCharacters } from '你的文件地址';
isEmojiCharacter('你需要校验的字符串')
isSpecialCharacters('你需要校验的字符串')
结束语:关注我,少走弯路!

image.png

相关文章
hutool验证是否为中文字、英文字母、数字和下划线
hutool验证是否为中文字、英文字母、数字和下划线
|
5月前
|
开发者
|
6月前
证件校验正则
证件校验正则
41 0
【正则表达式】正则表达式同时支持验证手机号码和座机号码
【正则表达式】正则表达式同时支持验证手机号码和座机号码
|
前端开发
手机199开头的号码的正则验证
手机199开头的号码的正则验证
97 2
|
前端开发
前端切图:用正则替换手机号码
前端切图:用正则替换手机号码
52 0