av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術文章
文章詳情頁

javascript - 這個正則表達式為什么總是只能替換掉一個字符串??

瀏覽:115日期:2023-09-04 15:00:43

問題描述

我是想把雙大括號里的包括字符串替換成真正的值,但是總是只能替換掉一個,不知道為什么?

var tpl = ’/cube_xinbao_dial_result/{{report_type}}/{{query}}’;var data = {report_type:1, query: ’2323’}function render(tpl, data){ var re = /{{([^}]+)?}}/g; var match = ’’; while(match = re.exec(tpl)){tpl = tpl.replace(match[0],data[match[1]]); } return tpl;}console.log(render(tpl,data));

問題解答

回答1:

ad

回答2:

String.replace 也支持正則表達式當作參數哦,給你改寫了一下

var tpl = ’/cube_xinbao_dial_result/{{report_type}}/{{query}}’;var data = {report_type:1, query: ’2323’}function render(tpl, data){ var re = /{{([^}]+)?}}/g; return tpl.replace(re, function($0, $1, $2){if( $1 in data ){ return data[$1];}else{ return '[DATA.'+ $1.toUpperCase() + ']'; //如果沒有,提示標簽錯誤} });}console.log(render(tpl,data));/* /cube_xinbao_dial_result/1/2323*/console.log(render(tpl,{query:1234}));/* /cube_xinbao_dial_result/[DATA.REPORT_TYPE]/1234*/

如果執意要使用你原來的方式,需要取消掉全局參數g

var tpl = ’/cube_xinbao_dial_result/{{report_type}}/{{query}}’;var data = {report_type:1, query: ’2323’}function render(tpl, data){ var re = /{{([^}]+)?}}/; //不要全局匹配就可以 var match = ’’; while(match = re.exec(tpl)){tpl = tpl.replace(match[0],data[match[1]]); } return tpl;}console.log(render(tpl,data));/* /cube_xinbao_dial_result/1/2323*/回答3:

RegExp對象,有個屬性,lastIndex,代表一個整數,標示開始下一次匹配的字符位置。。當exec第一次執行成功后,lastIndex為匹配項位置+1。正因為這樣,再次調用才會會獲得下一個匹配項。回到你這個例子,第一次循環后,re的lastIndex為40,而此時tpl變為了tpl='/cube_xinbao_dial_result/1/{{query}}'顯然你要匹配的query的位置是在40之前的,所以再次匹配時失敗,exec返回null,循環跳出。

回答4:

var tpl = ’/cube_xinbao_dial_result/{{report_type}}/{{query}}’;var data = {report_type:1, query: ’223’}function render(tpl, data){ var re = /{{([^}]+)?}}/g; var tpl2=tpl; tpl.match(re).forEach(function (val) {tpl2= tpl2.replace(val,data[val.substring(2,val.length-2)]); }); return tpl2;}console.log(render(tpl,data));

輸出結果

/cube_xinbao_dial_result/1/223

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 精品久久99 | 久久午夜剧场 | 夜夜艹| 日韩欧美网 | 欧美三区在线观看 | 毛片av免费在线观看 | 亚洲精品一区二三区不卡 | 美女拍拍拍网站 | 91美女在线 | 中文字幕亚洲国产 | 亚洲精品黄色 | 黄色av免费 | 精品欧美激情在线观看 | 天堂资源 | 在线日韩中文字幕 | 免费艹逼视频 | 国产成人精品福利 | 手机看片169| 久久精品国产精品青草 | 久久久久国产一区二区三区四区 | 三级av在线| 日日夜夜天天 | 一级一片在线观看 | 九九综合 | 夜夜久久| 99成人精品| 久久久久久99 | 久久国产精品一区二区 | 国产精品日产欧美久久久久 | 一区二区av | www.99re| 中文字幕一区二区三区四区五区 | 国产精品区一区二区三 | 婷婷五月色综合 | 欧美自拍一区 | 欧美日韩综合一区 | 欧美日韩不卡合集视频 | 视频二区在线观看 | 最近中文字幕第一页 | 国产一区二区视频在线观看 | 久久99蜜桃综合影院免费观看 |