javascript - 如何使用 RegExp 将反斜杠替换为双反斜杠?

标签 javascript regex

我需要使用 javascript 修改该值,以使其准备好作为 SQL 插入查询的一部分。

目前我有以下代码来处理单引号 ' 字符。

value = value.replace(/'/g, "\\'");

这段代码没有问题。现在我注意到独立的反斜杠导致了错误。

如何删除那些独立的反斜杠?

最佳答案

Now I noticed that stand-alone backslashes are causing errors.

您正在操作的字符串中的反斜杠不会对替换 ' 字符产生任何影响。如果您的目标是替换反斜杠 字符,请使用:

value = value.replace(/\\/g, "whatever");

...这会将字符串中的所有反斜杠替换为“whatever”。请注意,我必须写两个反斜杠而不是一个。那是因为在 regular expression literal , 反斜杠用于引入各种特殊字符和字符类,也用作转义符——正则表达式文字中的两个反斜杠(如在字符串中)表示字符串中的单个实际反斜杠。

要将单个反斜杠更改为两个反斜杠,请使用:

value = value.replace(/\\/g, "\\\\");

请再次注意,要在替换字符串中获得文字反斜杠,我们必须对这两个反斜杠中的每一个进行转义——导致替换字符串中总共有四个反斜杠。

I need to modify the value using javascript, to make it ready to be put as part of a SQL insert query.

您不想手动执行此操作。任何允许您进行数据库查询的技术(JDBC、ODBC 等)都将提供某种形式的准备参数化 语句(link),它处理为您解决这些逃避问题。自己动手几乎肯定会在您的软件中留下可能被利用的安全漏洞。您希望使用一个团队的工作,该团队必须仔细考虑这个问题,并在问题出现时定期更新生成的代码,而不是单独飞行。此外,如果您的 JavaScript 在客户端上运行(大多数情况下是这样,但绝不是全部——我一直在服务器端使用 JavaScript),那么您什么操作都可以转义字符串安全,因为可以欺骗客户端对服务器的请求,从而完全绕过您的客户端代码。

关于javascript - 如何使用 RegExp 将反斜杠替换为双反斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8684975/

相关文章:

JavaScript - 使 Canvas 成为全局变量

javascript - 如何捕捉 stopPropagation 事件

regex - 如何在 Sublime Text 中使用正则表达式删除单词之间的空格?

php - 将 JS 正则表达式转换为 PHP 正则表达式

javascript - 哪个 javascript 解释器最容易嵌入到 C 应用程序中?

javascript - 在创建主窗口之前,如何在主进程中安全地预加载内容?

javascript - 使用 cookies 只显示我的弹出窗口一次?

regex - 如何在 git diff 中拆分标点符号上的单词?

javascript - 正则表达式允许子域

java - 在 Java 的长文本中查找给定子字符串的第一个匹配的整个单词