最近做会员个人身份页的时候遇上如下问题:
测试的昵称:jesse$<
查看代码:
看代码很快可以注意到两点:“replace
正则”和“$
”。
在js
中replace
支持正则表达式,而$
又恰好是正则向后匹配的特殊字符,很容易想到是正则引起的问题。而据我所知正则向后引用只有$1
、$2
、$3
、$4……
,而这里只有一个”$”
没有数字。
昵称“jesse$<
”在后台经html
特殊字符处理,传到前端是:“jesse$<
”,看页面结果注意到“$”
后的“&”
的也被替换了。难道是“$&”
在js
里表示正则向后引用的全匹配?
然后去掉了正则,将代码改成:
居然还是同样的结果,太诡异了!!!
更诡异的是在IE
下查看,居然是显示正确的(之前一直在ff
下测试)!
测试代码:
IE
和ff
显示相同:
经测试,“$&”
果真表示正则向后引用的全匹配,算我孤陋,之前居然不知道!
测试代码:
ff
显示:
IE
显示:
经测试,ff
下居然replace
即使不用正则,“$&”
也表示向后全匹配!!!
无语!
查找资料、测试并总结如下:
一、
字符
|
含义
|
$$
|
$
|
$&
|
指定与整个模式匹配的 stringObj
的部分。
|
$`
|
指定由 $&
描述的匹配之前的 stringObj
部分。
|
$'
|
指定由 $&
描述的匹配之后的 stringObj
部分。
|
测试代码:
Ie
、ff
和chrome
结果相同:
二、
ff
和chrome
下replace
不使用正则,也对上述特殊字符起作用
ie
下replace
不使用正则,对上述特殊字符不起作用
测试代码:
ff
和chrome
结果:
Ie
结果:
三、
由此,我们在应用replace
等正则相关函数时,是否有必要特殊处理下上述存在情况呢?
测试代码:
页面显示:
你还可以自己测试下:
比较好的做法是:
function tplReplace(str,json){
return str.replace(/{(\w+)}/gi,function(a,b){
return b in json ? json[b] : a;
}
}
分享到:
相关推荐
在JavaScript中,`replace()`方法是一个非常常用的字符串操作函数,用于在字符串中替换匹配到的正则表达式或特定子串。在这个问题中,开发者遇到了一个关于`replace()`方法和正则表达式特殊字符 `$` 的疑惑。 首先...
小姐姐炫酷唯美引导页.zip
scratch少儿编程逻辑思维游戏源码-让它们跳起来.zip
少儿编程scratch项目源代码文件案例素材-战斗塔防.zip
前端开发_Vue全家桶_vw适配_vux组件库_mescroll滚动_fastclick优化_mock模拟_less预处理器_移动端脚手架_基于Vue2和Webpack3构建的移动
数据可视化分析_微信小程序开发_JavaScript_Canvas图表渲染_数据助手工具_仿微信小程序数据助手_支持线性图圆环图柱状图条形图_动态效果适配_商业数据分析_移动端数据
少儿编程scratch项目源代码文件案例素材-章鱼怪.zip
音乐流媒体_API开发_网易云音乐接口封装与数据抓取_提供完整的网易云音乐API调用解决方案_包含歌曲搜索_MP3资源获取_歌词解析_播放列表管理_歌手专辑查询_专辑详情展示_MV
物联网与健康监测_基于RISC-V架构ESP32-C3芯片与MAX30102MAX30205传感器_LVGL图形界面与WiFiBLE双模通信的智能手表系统_实时监测心率血氧体温
wangtengfei-hn_EmployeesExample_23540_1745868671962
Android开发_自定义View绘制动画效果_模仿小米手环App首页计步数据展示_实现可自定义目标步数当前步数颜色字体大小圆点尺寸的动态步数统计图表组件_用于健康运动类App展示
少儿编程scratch项目源代码文件案例素材-钻机机器人.zip
scratch少儿编程逻辑思维游戏源码-狂暴坦克.zip
scratch少儿编程逻辑思维游戏源码-拳击.zip
scratch少儿编程逻辑思维游戏源码-魔方冲刺.zip
少儿编程scratch项目源代码文件案例素材-重返危机.zip
杰奇CMS小说网站系统_php53-73_mysql5-MariaDB10_utf8mb4编码_GBK自动转码_INNODB存储引擎_多模块支持_前后台分离_电脑手机双版适配_
linyuan620_StockAnalysisAssistant_17128_1745866117970
本系统采用的数据库是Mysql,使用SpringBoot框架开发,运行环境使用Tomcat服务器,ECLIPSE 是本系统的开发平台。在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。
少儿编程scratch项目源代码文件案例素材-足球踩踏者.zip