繁体   English   中英

带有美元符号的Javascript str.replace无法正常工作

[英]Javascript str.replace with dollar sign not working

示例字符串被替换:

https://fw.adsafeprotected.com/rjss/bs.serving-sys.com/52023/7720220/BurstingPipe/adServer.bs?cn=rsb&c=28&pli=1234567890&PluID=0&w=300&h=600&ord=[timestamp]&ucm=true&ncu=$${CLICK_URL_ENC}$&adsafe_preview=${IS_PREVIEW}`

我正在尝试进行的替换:

$${CLICK_URL_ENC}$  --> $$${CLICK_URL_ENC}$$
[timestamp]         --> ${CACHEBUSTER}

所需的输出:

https://fw.adsafeprotected.com/rjss/bs.serving-sys.com/52023/7720220/BurstingPipe/adServer.bs?cn=rsb&c=28&pli=1234567890&PluID=0&w=300&h=600&ord=${CACHEBUSTER}&ucm=true&ncu=$$${CLICK_URL_ENC}$$&adsafe_preview=${IS_PREVIEW}

我尝试过的代码:

码:

var v = $("textarea#creative-content").val();
v = v.replace(/\$\$\{CLICK\_URL\_ENC\}\$/g, "$$${CLICK_URL_ENC}$$");
v = v.replace("[timestamp]","${CACHEBUSTER}");
console.log(v);

输出:

  • [timestamp]更改为${CACHEBUSTER}
  • $${CLICK_URL_ENC}$更改为$$${CLICK_URL_ENC}$$

码:

var v = $("textarea#creative-content").val();
v = v.replace("$${CLICK_URL_ENC}$", "$$${CLICK_URL_ENC}$$");
v = v.replace("[timestamp]","${CACHEBUSTER}");
console.log(v);

输出:

  • [timestamp]更改为${CACHEBUSTER}
  • $${CLICK_URL_ENC}$更改为$$${CLICK_URL_ENC}$$

码:

var v = $("textarea#creative-content").val();
v = v.replace("\$\${CLICK_URL_ENC}\$", "\$\$\${CLICK_URL_ENC}\$\$");
v = v.replace("[timestamp]","${CACHEBUSTER}");
console.log(v);

输出:

  • [timestamp]更改为${CACHEBUSTER}
  • $${CLICK_URL_ENC}$更改为$$${CLICK_URL_ENC}$$

如何使用JavaScript / jQuery进行所需的更改?

您需要escape美元符号。 这是通过连续键入两个来完成的。 您希望开头有3个美元符号,这意味着替换字符串中必须有6个美元符号:

v.replace("$${CLICK_URL_ENC}$", "$$$$$${CLICK_URL_ENC}$$$$");

在替换中,$是捕获组时使用的特殊字符,因此需要使用$符号对其进行转义,这使我们难以理解,例如:

'$${CLICK_URL_ENC}$'.replace(/\$\${CLICK_URL_ENC}\$/g, '$$$$${CLICK_URL_ENC}$$$');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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