一个JavaScript中正则表达式匹配中括号的问题

在开发聊天室,做表情匹配的时候遇到如下问题

var str = '今晚不去了[坏笑]有人请吃饭';

var reg = new RegExp('\[坏笑\]');

var result = str.replace(reg,'*');

alert(result);

上述代码的执行结果是:

不知道大家看出来问题了没。

我的正则表达式本意是要将 [坏笑] 完整的替换掉,由于中括号[]在正则规则中表示原子表,故转义了一下,但就结果来看,依旧是按照原子表的意思去用了。

这个问题很奇怪,按照官方手册说法应该是将中括号成功转义了,但意料之外的结果就在眼前。经过后盾人大牛向老师的提醒,用两个反斜线才转义成功,没找到理论根据,但的确可行,如果以后遇到类似问题可以参考本次解决办法。

最后的写法如下:

var str = '今晚不去了[坏笑]有人请吃饭';

var reg = new RegExp('\\[坏笑\\]');

var result = str.replace(reg,'*');

alert(result);

正确结果:

关于博主
骨灰级博客玩家
国内第一批90后网站站长/程序员
做过七年前端讲师
目前从事锦鲤观赏鱼电商行业
鱼贝贝锦鲤创始人
文章列表
1
神坑react native之unable to load script from assets 'index.android.bundle'报错的解决方法
神坑react native之unable to load script from assets 'index.android.bundle'报错的解决方法
2
万能的京东快递小哥,武能单手扛箱包,文能键盘调bug
万能的京东快递小哥,武能单手扛箱包,文能键盘调bug
3
Adobe系列软件Photoshop安装时提示“安装完成,下列产品的某些项目无法成功安装”错误的原因及解决方法
Adobe系列软件Photoshop安装时提示“安装完成,下列产品的某些项目无法成功安装”错误的原因及解决方法
4
MAC系统中安装Adobe系列软件提示“您的系统上的安装程序模块版本与当前的安装程序不兼容。请下载最新版本Adobe安装程序,然后重试。(错误代码188)”的解决方案
MAC系统中安装Adobe系列软件提示“您的系统上的安装程序模块版本与当前的安装程序不兼容。请下载最新版本Adobe安装程序,然后重试。(错误代码188)”的解决方案
5
windows下快速删除大量文件的方法
windows下快速删除大量文件的方法
最新评论
比比拉布
比比拉布
5月7日
太感谢了!!!!!!找了这么多的教程,只有你点出来了关键点——设计视图!!!!
Jake
Jake
3月7日
Halo 啊~麻烦更新下我的博客地址,原名:Jing Blog。麻烦更新如下: Jake Blog(后缀可以省略,也可以保留,看哪个风格适合) 网址:htt
评论于关于博主