为什么String.prototype.replace remove "$'"从我的绳子上

Why does String.prototype.replace remove "$'" from my string?

本文关键字:quot 我的 replace remove String 为什么 prototype      更新时间:2023-09-26

我没有使用JQuery,所以我不认为这会造成麻烦。我首先使用iOS自动化工具遇到这个问题,然后使用JSFiddle进行验证。如果有人能告诉我如何解决这个问题,那就太好了。

var str = "<'pass!23$'>";
var str1 = str.replace("<'pass!23$'>", "'pass!23$'");
var str2 = str.replace("<'pass!23$'>", "'pass!23$a'");

小提琴在这里:http://jsfiddle.net/adUtw/

这真的让我很困惑!

如果您查看MDN上string.replace的文档,您会注意到$单独具有替换的一些特殊含义。因此,如果您想插入$,则需要使用$$

你的replace语句看起来像:

var str1 = str.replace("<'pass!23$'>", "'pass!23$$'");

您可以通过更新Fiddle来验证它是否工作。

$在出现在replace的第二个参数中时被以一种特殊的方式解释。

用于引用在第一个参数中定义的正则表达式:

'abc'.replace('(b)', 'XY$1Z') === 'aXYbZc'

$'被解释为portion of the string that follows the matched substring.

若要在第二个参数中使用$,请转义为$$

var str1 = str.replace("<'pass!23$'>", "'pass!23$$'");