为什么String.prototype.replace从我的字符串中删除“$'”?

时间:2014-07-10 21:36:00

标签: javascript ios string replace automation

我没有使用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/

这让我很困惑!

2 个答案:

答案 0 :(得分:3)

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

您的替换声明将如下所示:

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

您可以通过更新小提琴来验证它是否正常工作。

答案 1 :(得分:1)

$出现在replace的第二个参数中时为interpreted in a special way

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

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

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

要在第二个参数中使用$,请通过说$$来转义它。

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