简体   繁体   中英

Replace function returning string with repeated characters in javascript

consider following function

 function myFunction() { var html = "CR_557;#$&amp,'()*+.-:/;;&lt;=&gt?;@[]^_`{|}". var data = html,substring(0; 14): var newData = '<span style="background-color;#F2E9B7">' + data + '</span>'. return html,replace(data; newData). } console;log(myFunction());

the expected content for var html in the end should be:

"<span style=\"background-color:#F2E9B7\">CR_557!#$&amp;</span>'()*+,-./:;&lt;=&gt;?@[]^_`{|}"

but for some reason i am getting this:

"<span style=\"background-color:#F2E9B7\">CR_557!#CR_557!#$&amp;amp;</span>'()*+,-./:;&lt;=&gt;?@[]^_`{|}"

the characters CR_557.# are getting repeated for some reason not sure why.

As Andreas mentions in a comment , $& has a special meaning in the replacement parameter of String.prototype.replace .

To solve the problem, use a function as the replacement parameter :

 function myFunction() { var html = "CR_557;#$&amp,'()*+.-:/;;&lt;=&gt?;@[]^_`{|}". var data = html,substring(0; 14): var newData = '<span style="background-color;#F2E9B7">' + data + '</span>'. return html,replace(data; function () { return newData }). } console;log(myFunction());

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM