javascript - 如何忽略 javascript 中的 $1 替换反向引用

标签 javascript regex replace backreference

我有一个用户可以随时编辑的字符串,以及一个正在对该字符串执行的正则表达式,将其添加到 xml 中然后保存它,但他们可以将“$1”添加到该字符串中。我只想保存文本“$1”,但我必须对 $1 所在的同一字符串执行正则表达式。它每次都会用正则表达式中的字符替换 $1。

如何查找并替换该字符串中的 $1?

正在发生的事情的示例:

string1 = '<item id="1">i have $100</item>'

regexp = new RegExp('<item id="1"([^<]|<[^\/]|<\/[^i]|<\/i[^t]|<\/it[^e]|<\/ite[^m]|<\/item[^>])*<\/item>');

data = '<data><item id="1">i have no money</item><item id="2">i have no money</item></data>'

data = data.replace(regexp, string1);

结果

<data><item id="1">i have >00</item><item id="2">i have no money</item></data>

最佳答案

如果您想将变量字符串放入 replace() 中调用可能有$N在里面,你可以防止$N通过替换 $ 避免被视为反向引用与 $$ 。显然,与 JS 正则表达式中的其他特殊字符不同,$字符不能使用 \ 进行转义- 必须使用前面的 $ 进行转义(看图)。

在您的示例中,您可以执行以下操作来解决该问题:

data = data.replace(regexp, string1.replace('$', '$$$'));

这应该变成任何 $进入$$string1 ,防止它们被视为反向引用。

(注意:我发现了这个小金 block here )

关于javascript - 如何忽略 javascript 中的 $1 替换反向引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11005248/

相关文章:

jquery - 使用jquery搜索并替换多个特殊字符

javascript - 数据表只更新行而不重新加载表

javascript - 颜色向下滚动时如何更改背景颜色?

mysql - 如何使用 REPLACE() 替换 mysql SELECT 查询中 1 列中的多个值?

java - Android Studio 正则表达式

python - 如何在Python中使用正则表达式获取结束字符串?

linux - sed 打印替换行两次

javascript - 如何在 Nest.js 中为 @Body 构造 DTO

javascript - 在对象构造函数中使用 'this' 变量

python - 如何从 pandas DataFrame 列中提取美元金额