手机版

js替代正则性相关的奇怪问题

时间:2021-10-26 来源:互联网 编辑:宝哥软件园 浏览:

测试昵称:jesse$查看代码:Javascript代码复制代码如下: $ id ('f _ msg _ grow _ 1 ')。inner html=msg[' not _ club '][' grow _ value ']。replace (/\ {nick _ name}/,this.info .查看代码,可以很快注意到两点:“替换常规”和“$”。Replace支持js中的正则表达式,$恰好是正则后向匹配的特殊字符,所以很容易认为是正则引起的问题。据我所知,只有1美元、2美元、3美元、4美元.但只有一个不带数字的“$”。昵称“jesse$”在后台由html特殊字符处理,并作为“jesse$”传递给前端。看完页面,注意到“$”后面的“”也被替换了。“$”是指js中正则后向引用的完全匹配吗?然后,规则性被移除,代码被更改为:Javascript代码被复制如下: $ id ('f _ msg _ grow _ 1 ')。inner html=msg[' not _ club '][' grow _ value ']。替换(' {nick _ name} ',this.info ['friend。即使是同样的结果,也太诡异了!更诡异的是在IE下查看时显示正确(之前在ff下测试过)!测试代码:复制Javascript代码的代码如下: document . write(' NAME:{ NAME } ')。替换(/\{NAME}/g,'张建光$ ');与IE和ff显示相同:C-sharp代号:张建光{ NAME } amp考完试,“$”真的是正规后向引用的完全匹配,所以我是懵懂的,只是之前不知道而已!测试代码:按照如下方式复制Javascript代码: document . write(' NAME:{ NAME } ')。替换(“{NAME}”、“张建光$”);Ff显示:C-sharp代号:张建光{NAME}amp IE显示:C-sharp代号:张建光$。经过测试,它实际上是在ff下更换的。即使不使用正则化,“$”也意味着完全后向匹配!无语!查找数据,测试,总结如下:1。字符含义$ $ $ $指定stringObj中与整个模式匹配的部分。$ `指定匹配前由$描述的stringObj部分。“$”指定匹配后的字符串部分,由$。

测试代码:复制代码如下: document . write(' NAME:{ NAME } _ _ ')。替换(/\{NAME}/g,'张建光$ ');Document.write ('name: {NAME}__ ')。替换(/\{NAME}/g,'张建光$ $ ');Document.write ('name: {NAME}__ ')。替换(/\{NAME}/g,'张建光$ ` ');Document.write ('name: {NAME}__ ')。替换(/\{NAME}/g,'张建光$ ');Ie、ff和chrome的结果是一样的:复制代码如下:名称:张建光{NAME}amp__名称:张建光$ _ _名称:张建光名称:_ _ _ _名称:张建光_ _ _ _ _ 2。替换下ff和chrome不使用规律性,但也适用于上面的特殊字符。测试对上述特殊字符不起作用的代码:按如下方式复制代码: document . write(' NAME:{ NAME } _ _ ')。替换(“{NAME}”、“张建光$”);Document.write ('name: {NAME}__ ')。替换(“{NAME}”、“张建光$”);Document.write ('name: {NAME}__ ')。替换(' {NAME} ','张建光$ $ ');Document.write ('name: {NAME}__ ')。替换(' {NAME} ','张建光$ ` ');Document.write ('name: {NAME}__ ')。替换(“{NAME}”、“张建光$”);Ff和chrome结果:复制代码如下:名称:张建光{NAME}amp__名称:张建光$ __名称:张建光名称:_ _名称:张建光_ _ _ _ _ Ie结果:复制代码如下:名称:张建光$ _ _名称:张建光$ _ _名称:测试代码:复制代码如下: var str=' NAME:{ NAME } ';var str2=' $ jesse $document . write(str . replace(/\ { NAME }/g,str 2));document . write(' br/');document . write(str . replace(/\ { NAME }/g,str2.replace(/\$/g,' $ $ $ $ ')));//注意有四个“$”页显示:复制代码如下: Name:{ Name } lt;杰西{姓名} lt名称:$jesse$您也可以自己测试:复制代码如下: varst=' Name:{ Name } ';var str2=' $ jesse $document . write(str . replace(/\ { NAME }/g,str2.replace(/\$/g,' $ $ ')));好的做法是复制如下代码:函数TPL replace (str,JSON) {return str。替换(/{(\ w)}/gi,函数(a,b){在JSON中返回b?JSON[b]: a;} }

版权声明:js替代正则性相关的奇怪问题是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。