游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

表单input输入框复制粘贴进unicode零宽字符,前端踩

  Unicode统一码
  也叫万国码、单一码,是计算机科学领域里的一项业界标准,包括字符集、编码方案等。统一码是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
  Unicode零宽字符
  Unicode字符中有一类特殊的字符叫做零宽字符ZWJ(zerowidthjoiner),也叫非打印字符、不可见字符。正则的断言即叫零宽断言,意思即本身并不占用宽度,如比较出名的零宽空格ZWSP:U200B。
  零宽字符本质也是字符,对于计算机来说,它依然会占用空间,在Unicode字符集中拥有独立的编码,你在Word键入这一字符它仍会被计入字数统计,同样在代码中打印这类字符的长度可以看到也是会占用长度的。
  零宽字符的宽度为0,对于肉眼而言不可见,在我们常用的一些软件中并不会显示,比如浏览器、Excel。。。,这些字符通常被用于在阿拉伯文与印度语系等文字中,用于控制字符间是否产生连字的效果,在其他大多数语言中,你并不能直接打出这类字符。
  常见的几种零宽字符有:零宽空格:U200B零宽连接符:U200D,常见的复杂Emoji表情即用到了该字符,用于表示多字符关系从而合成复杂新字符零宽非连接符:U200C零宽非断空格符:UFEFF左至右符:U200E右至左符:U200F蒙古文元音分隔符:U180E怎么能看见零宽字符?
  直接复制到开发工具如vscode里,是可以直接看到这类字符的unicode码的。
  在windows记事本中右键,选择显示Unicode控制字符,也可以看到这类特殊符号。
  navicat中查看mysql中的数据,也可以像记事本一样右键选择显示Unicode控制字符,光标聚焦的时候也可以看到有特殊符号显示出来。
  还有复制粘贴进网页、记事本、输入框中,移动光标的时候,也可以发现,这类字符也是需要靠光标移动的。零宽字符的应用场景字符加密解密数据防爬隐形水印缩短网址敏感词分隔过审空白评论、空白用户名输入内容翻转如:花了7万5千,其中的7万5会被翻转成5万7零宽字符踩坑
  之所以发现这个问题,也是从客户的一个excel模板中粘贴电话号码,最终发现莫名有特殊字符,开始还以为是输入组件的bug。
  数据库是支持这种字符的,所以如果前后端未进行数据过滤,是会被直接存储到数据库中的,正常也是没什么问题。但是如果有搜索功能,用户在应用中直接手动输入检索的时候,因为手动输入是不包含特殊字符的,所以有可能导致匹配不出来,给人的感觉就是:明明看着一毛一样,一个字母一个字母对着敲的,咋就搜不出来呢!
  在前端表单中,如果用户输入时是直接从其他地方如excel里复制的,就有可能包含这类看不见的零宽字符,据说从iphone手机的通讯录里复制的电话号码粘贴进excel中就有可能包含零宽字符。
  当用户提交时,前端在控制台打印或者network里看提交的接口参数里也是看不到这类字符的,还有如果input输入框有限制最大输入长度maxlength,零宽字符也是会占用输入框的长度的。前端解决方案
  前端解决可以直接在输入或提交表单的时候通过unicode码去过滤这类特殊字符,但是每个输入框都要这样去做工作量太大了,而且都是重复性工作,最终想到了用vue的全局指令自己封装一个vtrim统一去过滤数据,正好项目中用的elmentui的输入框组件trim修饰符也有bug,直接一块解决了,后期使用和维护都比较方便。
  directives目录下的index。js,利用webpack提供的require。context,自动注册目录下的指令文件,直接将文件名作为指令名:require。context是webpack提供的api用来创建上下文作用域三个参数分别为:目录、是否搜索子文件夹、匹配文件名的正则constfileInforequire。context(。,false,。(?!index。js)。。js)constfileNameListfileInfo。keys()〔〕exportdefault{插件为对象时,Vue。use()会默认调用installinstall:function(Vue){fileNameList。forEach(fileName{constdirectivefileInfo(fileName)提取路径中的文件名作为指令名称constdirectiveNamefileName。replace((。)(〔azAZ09〕)。js,2)注册指令Vue。directive(directiveName,directive。defaultdirective)})}}
  directives目录下的trim。js,去除输入框首尾空格和过滤零宽字符:去除输入框首尾空格和过滤零宽字符elementui的输入框elinput加了trim会导致字符中间不能输入空格(文档上有说:不支持vmodel修饰符)需同时过滤掉输入内容里的零宽字符,一般是用户直接从excel中直接复制粘贴进来的内容constTRIM{inserted:el{兼容第三方输入组件,如elinputconstinputTagel。tagName!INPUT?el。querySelector(input):elconsthandlerfunction(event){constoldValevent。target。value过滤掉零宽字符和首尾空格constnewValoldVal。replace(〔〕g,)。trim()if(oldVal!newVal){event。target。valuenewValdispatchEvent(inputTag,input)}}el。inputTaginputTagel。blurHandlerhandlerinputTag。addEventListener(blur,handler)},unbind:el{const{inputTag}elinputTag。removeEventListener(blur,el。blurHandler)}}functiondispatchEvent(el,type){constevtdocument。createEvent(HTMLEvents)evt。initEvent(type,true,true)el。dispatchEvent(evt)}exportdefaultTRIM
  在vue入口文件main。js中注册全局指令:
  Vue。use本身是一个函数,如果需要注册的插件是一个对象,就需提供insatll方法,Vue会去执行它,同时传递一个Vue构造函数作为第一个参数,以及use中的其他参数,不依赖Vue去运行的我们可以直接用Vue。prototype去挂载到原型上就行了;需要和Vue构造函数进行交互的时候,才使用Vue。use,如全局组件(像iview、elementui)、全局过滤器、全局指令这些。importVuefromvueimportAppfrom。Appimportrouterfrom。router全局指令importdirectivesfromdirectivesVue。use(directives)newVue({el:app,router,template:,components:{App},})
  在vue页面中的输入框中使用:templateinputvtrimelinputvtrimtemplate
  参考文档Unicode官网HowtouseUnicodecontrolsforbiditextUnicodeCharacterCategories后端过滤隐藏字符(零宽度字符)

有些东西丢弃后重拾起来总会变的扔到水里的货物是不容易打捞的,即便打捞起来,也往往损坏得无法修复了。我怕等你有条件把你扔掉的荣誉、美德和善心重新拉回来时,它们经海水浸泡,已变得黯然失色了《飘》目的的实现总是要……什么人不适合涂腮红日常有必要涂腮红吗腮红可以提升气色,很多人化妆都会画腮红,对于有些人来说腮红和口红眉毛是同需求的化妆品,涂了腮红,整个人才会呈现健康红润的颜色。什么人不适合涂腮红没有人不适合涂腮红,只要找……腮红过期了还能继续用吗腮红保质期有多久化妆品都是有保质期的,过期的化妆品不能继续使用,腮红也一样,腮红是直接扫在脸上的,过期的腮红成分会变质,用在皮肤上会刺激伤害皮肤。腮红过期了还能继续用吗腮红过期不能继续用……腮红摔碎怎么复原腮红脱盘怎么固定回去我们在购买粉质腮红时,腮红盘里的粉都是通过处理压实的。但如果一旦不小心摔裂,就很有可能导致腮红盘中的粉质碎掉。这种情况应该如何补救呢,小编教你几招压盘技巧。腮红摔碎了怎么复原……平价腮红哪个牌子好用日本平价腮红推荐成为元气少女必不可或缺的化妆品就是腮红了,腮红作为妆容的修饰能够使整个脸看起来更有气色。日本的腮红大多品牌都比较出名,又比较便宜,下面为大家介绍几款平价腮红。平价腮红哪个牌子好……韩国队又搞事?选手指责奥运村伙食太油腻,不止一次没事找事?编辑:配货员家人们,大无语事件又发生了,韩国队又出来搞事情了韩国选手指责我们奥运村的伙食太油腻,说中国人不会做料理韩国可是不止一次没事找事了,一会……大年三十别凑合,这6道菜请备好,鸿运当头好年华,喜庆又红火大年三十年夜饭,给大家分享6道红运当头的菜肴,有荤有素有糕点,寓意一年红红火火,鸿运当头!硬菜看这里冰糖肘子【食材:】肘子、料酒、油、冰糖、葱花、姜片、香叶、桂皮、……腮红液可以当口红吗腮红液体好还是粉质好液体腮红的质地非常水,延展性很好,自然持久好用,能让整个人的气色更好,自然清透的腮红液上妆效果很好,深受大家的欢迎与喜爱。腮红液可以当口红吗腮红液可以当做口红使用,但是腮……用腮红液前要用散粉吗腮红液可以当唇彩用吗腮红是很多人化妆步骤必不可少的一步,腮红不仅可以增添起色,还可以修饰脸型,腮红液是很多人喜欢用的一种腮红,腮红液的效果更加自然。用腮红液前要用散粉吗用腮红液前不需要用散粉……腮红液和腮红膏区别腮红膏与腮红哪个好用腮红是很多人化妆的时候都会打的,市面上的腮红产品有很多,不同的腮红质地使用方法和使用效果都不一样,适合的肤质人群也不一样。腮红液和腮红膏区别腮红液和腮红膏最根本的区别就是……成方圆离过两次婚,无儿无女,晚年不缺爱情她是国内第一个自弹自唱的歌手。白衬衫牛仔裤,是她是标配。她就是歌手成方圆。成方圆一生活得很潇洒,从二十岁起恋爱就不断。虽然离过两次婚,但是从不排斥爱情。……新年怎么化妆才会赢新年妆怎么化妆容的画法有很多,大家在化妆的时候可以根据自己想要的风格来画出不一样的妆容,妆容不一样给人的感觉也会很不一样,马上就是新年了,可以画一个美美的新年妆迎接新的一年。新年怎么化妆才……
清明时节雨纷纷清明节是我国最重要的祭祀节日是祭祖和扫墓的日子每年一到清明节很多地方都会以不同的形式出现举行各式各样的纪念活动缅怀自家先辈和纪念战斗英雄……普拉达的香水怎么的呢普拉达的香水是什么档次的呢大家在生活中应该都听说过普拉达的香水吧,没有听说也没有关系今天小编就和大家一起来了解一下吧,究竟普拉达的香水怎么的呢,以及普拉达的香水是什么档次的呢,跟着小编我们一起来学习一下……全程4980公里的火车,需坐55个小时,游客却不觉得无聊疫情导致部分旅游景点的客流量下降,但这并不意味着许多人无法产生出门旅游的想法。有人向往大城市的都市风光,有人向往寂静山林的美感,而Z266次列车刚好符合大部分人对美景的需求,不……普拉达鸢尾香水好不好?普拉达鸢尾香水味道普拉达的这款香水主要的香味是鸢尾花,瓶身是浅绿色的淑女风,瓶身的设计比较简单。味道整体会比较清新,显得高雅清淡。今天小编就来为你介绍这瓶唯美的香水。普拉达鸢尾香水好不好开……stila液体眼影怎么用?stila液体眼影使用方法stila液体眼影是它们家的新品,本来就一直很心水它们家的眼影了,出了新品自然是要捧场的哟!超多闪片,给人一种小仙女的感觉,真的太美了!stila液体眼影怎么用你的化妆包……HUAWEI最便宜的手机推荐华为这个牌子我就不多介绍了,今天的目的主要是看它所有系列中最便宜的两个系列,它就是畅享系列和nova系列。没错,这两个系列应该是华为卖的最便宜的手机了,比起p系列和mat……头发精油什么牌子好平价实用护发精油盘点有些人的发质是天生的,而有些妹子完全是因为烫染造成的损伤,头发毛躁的大部分原因是缺少水分。下面5号网小编带大家来看一下头发精油什么牌子好?平价实用护发精油盘点。头发精油的功效……今年流行的开衫长半裙,优雅时髦又显气质,让你美出新高度由于现在是春天,所以大家都纷纷脱掉了羽绒服以及大衣,在气温逐渐升高的日子里,大家也尝试了各种温柔的开衫,开衫的搭配优雅知性,而且很适合女性朋友,在约会或者是职场中也都可以用一件……宝格丽香水怎么样宝格丽珠宝世家香水香评宝格丽香水一直是很多人的最爱,宝格丽香水旗下有很多香水种类,经常看到又很人推荐宝格丽香水,宝格丽珠宝世家香水是以宝石为灵感设计的香水,那么宝格丽香水怎么样?宝格丽珠宝世家香水香……宝格丽香水哪款最经典宝格丽香水这几款最受欢迎宝格丽是国际知名品牌,宝格丽香水一直很有名,在我们平时生活中经常可以见到有人使用宝格丽香水,宝格丽香水款式非常多,那么宝格丽香水哪款最经典?宝格丽香水这几款最受欢迎。宝格丽香水……迪拜的香精怎么使用迪拜香精使用方法迪拜的香精是非常好闻的,很多人去迪拜玩都会买迪拜的香精回来,迪拜的香精不仅外包装颜值高,像我也十分不错,迪拜的香精用法也有很多。迪拜的香精怎么使用1、兑香水是按1:9兑,……美甲2017新款图片红色,2017红色美甲图片多数女生都喜欢红色,红色的一切物体,17年来临美甲也该换一换这里5号网美妆达人给大家推荐12款2017红色美甲图片,以下我们就一起来来欣赏自己心仪的红色美甲图片大全。这是……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网