亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > regex > 正文

js replace正則相關的詭異問題

2020-01-20 22:20:45
字體:
來源:轉載
供稿:網友
 
測試的昵稱:jesse$<

查看代碼:Javascript代碼
復制代碼 代碼如下:

$id("f_msg_grow_1").innerHTML=msg["not_club"]["grow_value"].replace(//{NICK_NAME}/,this.info["friend"]["nick_name"]);

看代碼很快可以注意到兩點:“replace 正則”和“$ ”。

在js 中replace 支持正則表達式,而$ 又恰好是正則向后匹配的特殊字符,很容易想到是正則引起的問題。而據我所知正則向后引用只有$1 、$2 、$3 、$4…… ,而這里只有一個”$” 沒有數字。

昵稱“jesse$< ”在后臺經html 特殊字符處理,傳到前端是:“jesse$< ”,看頁面結果注意到“$” 后的“&” 的也被替換了。難道是“$&” 在js 里表示正則向后引用的全匹配?

然后去掉了正則,將代碼改成:Javascript代碼
復制代碼 代碼如下:

$id("f_msg_grow_1").innerHTML=msg["not_club"]["grow_value"].replace("{NICK_NAME}",this.info["friend"]["nick_name"]);

居然還是同樣的結果,太詭異了!!!

更詭異的是在IE 下查看,居然是顯示正確的(之前一直在ff 下測試)!

測試代碼:Javascript代碼
復制代碼 代碼如下:

document.write("姓名:{NAME}".replace(//{NAME}/g,"張劍光$&"));

IE 和ff 顯示相同:C-sharp代碼
姓名:張劍光{NAME}amp;
經測試,“$&” 果真表示正則向后引用的全匹配,算我孤陋,之前居然不知道!

測試代碼:Javascript代碼
復制代碼 代碼如下:

document.write("姓名:{NAME}".replace("{NAME}","張劍光$&"));

ff 顯示:C-sharp代碼
姓名:張劍光{NAME}amp
IE 顯示:C-sharp代碼
姓名:張劍光$&
經測試,ff 下居然replace 即使不用正則,“$&” 也表示向后全匹配!??!
無語!

查找資料、測試并總結如下:

一、

字符

含義

$$

$

$&

指定與整個模式匹配的 stringObj 的部分。

$`

指定由 $& 描述的匹配之前的 stringObj 部分。

$'

指定由 $& 描述的匹配之后的 stringObj 部分。

測試代碼:

復制代碼 代碼如下:

document.write("姓名:{NAME}__".replace(//{NAME}/g,"張劍光$&"));
document.write("姓名:{NAME}__".replace(//{NAME}/g,"張劍光$$"));
document.write("姓名:{NAME}__".replace(//{NAME}/g,"張劍光$`"));
document.write("姓名:{NAME}__".replace(//{NAME}/g,"張劍光$'"));

Ie 、ff 和chrome 結果相同:
復制代碼 代碼如下:

姓名:張劍光{NAME}amp__姓名:張劍光$__姓名:張劍光姓名:__姓名:張劍光____

二、 ff 和chrome 下replace 不使用正則,也對上述特殊字符起作用
ie 下replace 不使用正則,對上述特殊字符不起作用 測試代碼:
復制代碼 代碼如下:

document.write("姓名:{NAME}__".replace("{NAME}","張劍光$&"));
document.write("姓名:{NAME}__".replace("{NAME}","張劍光$&"));
document.write("姓名:{NAME}__".replace("{NAME}","張劍光$$"));
document.write("姓名:{NAME}__".replace("{NAME}","張劍光$`"));
document.write("姓名:{NAME}__".replace("{NAME}","張劍光$'"));

ff 和chrome 結果:
復制代碼 代碼如下:

姓名:張劍光{NAME}amp__姓名:張劍光$__姓名:張劍光姓名:__姓名:張劍光____

Ie 結果:
復制代碼 代碼如下:

姓名:張劍光$&__姓名:張劍光$&__姓名:張劍光$$__姓名:張劍光$`__姓名:張劍光$'__

三、 由此,我們在應用replace 等正則相關函數時,是否有必要特殊處理下上述存在情況呢?
測試代碼:
復制代碼 代碼如下:

var str = "姓名:{NAME}";
var str2 = "$<jesse$<";
document.write(str.replace(//{NAME}/g,str2));
document.write("<br />");
document.write(str.replace(//{NAME}/g,str2.replace(//$/g,'$$$$')));//注意這里是四個“$”

頁面顯示:
復制代碼 代碼如下:

姓名:{NAME}lt;jesse{NAME}lt;
姓名:$<jesse$<

你還可以自己測試下:
復制代碼 代碼如下:

var str = "姓名:{NAME}";
var str2 = "$<jesse$<";
document.write(str.replace(//{NAME}/g,str2.replace(//$/g,'$$')));

比較好的做法是:
復制代碼 代碼如下:

function tplReplace(str,json){
return str.replace(/{(/w+)}/gi,function(a,b){
return b in json ? json[b] : a;
}
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
少妇久久久久久| 欧美精品aaa| 欧美日韩在线观看视频| 国产一区二区三区毛片| 成人日韩在线电影| 欧美激情视频网站| 久久中文字幕在线| 超碰91人人草人人干| 91精品国产99| 一区二区中文字幕| 亚洲一级黄色av| 欧美精品久久久久久久免费观看| 亚洲欧美日韩国产中文| 欧美视频一区二区三区…| 欧美精品在线免费观看| 亚洲白拍色综合图区| 久久婷婷国产麻豆91天堂| 久久99国产精品自在自在app| 国产精品激情自拍| 亚洲毛片在线免费观看| 亚洲国产三级网| 一个人看的www欧美| 亚洲免费视频网站| 成人免费看吃奶视频网站| 久久精品精品电影网| 亚洲毛片在线观看.| 欧美在线亚洲一区| 精品国产一区二区三区在线观看| 久久久国产在线视频| 久久综合网hezyo| 国产精品一区二区三区成人| 91免费欧美精品| 亚洲国产天堂久久综合| 欧美视频一二三| 国产精品大片wwwwww| 亚洲三级 欧美三级| 亚洲丝袜一区在线| 欧美成人合集magnet| 精品国产老师黑色丝袜高跟鞋| 日韩成人在线免费观看| 国产主播精品在线| 国产精品亚洲欧美导航| 97超级碰在线看视频免费在线看| 国产日韩欧美在线观看| 91色在线观看| 亚洲精品v天堂中文字幕| 国产美女扒开尿口久久久| 一级做a爰片久久毛片美女图片| 欧美大肥婆大肥bbbbb| 日韩精品极品在线观看播放免费视频| 中文在线不卡视频| 国产成人精品视| 怡红院精品视频| 亚洲美女黄色片| 中文字幕亚洲欧美在线| 日本精品一区二区三区在线播放视频| 亚洲肉体裸体xxxx137| 神马久久久久久| 日本亚洲精品在线观看| 欧美又大粗又爽又黄大片视频| 欧美激情一级二级| 性日韩欧美在线视频| 久久久99免费视频| 午夜精品久久久久久久久久久久久| 欧美做爰性生交视频| 97精品一区二区三区| 欧美高清第一页| xxx一区二区| 欧美高清不卡在线| 久热精品视频在线观看一区| 亚洲人免费视频| 欧美激情久久久| 日韩专区在线观看| 国产成人jvid在线播放| 91成人在线观看国产| 97在线精品视频| xxav国产精品美女主播| 永久免费精品影视网站| 日韩影视在线观看| 久久久久久国产免费| 亚洲精品中文字幕有码专区| 亚洲无av在线中文字幕| 日韩成人激情视频| 中文国产成人精品久久一| 日韩在线免费观看视频| 亚洲成人亚洲激情| 91精品国产综合久久香蕉922| 亚洲第一页自拍| 91在线观看欧美日韩| 亚洲欧洲在线播放| 国产欧美在线播放| 亲爱的老师9免费观看全集电视剧| 日韩电视剧在线观看免费网站| 久久网福利资源网站| 三级精品视频久久久久| 国产97在线播放| 伊人伊成久久人综合网小说| 亚洲欧美日韩成人| 在线亚洲欧美视频| 国产精品国产三级国产aⅴ浪潮| 国产精品视频永久免费播放| 久久99国产精品久久久久久久久| 日韩欧美福利视频| 97国产一区二区精品久久呦| 欧美在线中文字幕| 中文字幕日韩综合av| 久久久久久有精品国产| 一本大道香蕉久在线播放29| 亚洲а∨天堂久久精品喷水| 亚洲xxxx做受欧美| 国产亚洲aⅴaaaaaa毛片| 中文字幕欧美精品在线| 一区二区三区动漫| 亚洲欧美日韩视频一区| 欧美精品在线视频观看| 国产美女被下药99| 另类图片亚洲另类| 精品福利在线观看| 欧美亚洲第一区| 91精品视频在线播放| 日韩网站免费观看高清| 亚洲深夜福利网站| 亚洲伊人第一页| 国产欧美精品xxxx另类| 欧美在线观看www| 国产亚洲精品一区二区| 日韩女优人人人人射在线视频| 午夜精品福利视频| 最近日韩中文字幕中文| 日产精品久久久一区二区福利| 国产综合在线看| 色吧影院999| 高清在线视频日韩欧美| 亚洲精品国精品久久99热| 亚洲国产精品电影| 欧美色视频日本版| 欧美性一区二区三区| 国产91精品久久久久久久| 国产欧美一区二区三区在线| 欧美刺激性大交免费视频| 亚洲欧美一区二区激情| 最近中文字幕2019免费| 欧日韩不卡在线视频| 亚洲一区二区三区毛片| 92福利视频午夜1000合集在线观看| 91久久久久久久一区二区| 欧美精品亚州精品| 精品少妇一区二区30p| 精品高清美女精品国产区| 久久久精品国产| 精品亚洲一区二区三区在线播放| 亚洲国产欧美一区二区三区同亚洲| 国产成人精品最新| 精品久久久久久久久久ntr影视| 亚洲欧美一区二区激情| 91久久精品国产91久久| 亚洲人成电影网站色xx| 日韩av影视在线| 日本aⅴ大伊香蕉精品视频| 久久99久久亚洲国产| 欧美中文字幕在线观看| 综合国产在线视频| 精品一区二区三区三区| 亚洲国产成人爱av在线播放|