用正则表达式将反斜杠前置到所选字符

Prepend backslash to selected characters with regex

本文关键字:字符 正则表达式      更新时间:2023-09-26

我现在使用的代码很难看,因为我必须为每个特殊字符分别写"replace"。

var str = ":''>";
str.replace("'","'''").replace(">","''>");

我想在<>*前面加上反斜杠()和通过regex。

使用将字符与字符集匹配的正则表达式,您可以尝试:

str = str.replace(/([<>*()?])/g, "''$1");

演示:http://jsfiddle.net/8ar3Z/

它匹配[ ]内部的任何字符(您指定的字符),将它们与周围的()捕获(以便在替换的文本部分中引用为$1),然后以''开头。


更新:

根据先生的建议@T.J.Crowder,不需要用()捕获,将$1更改为$&,写为:

str = str.replace(/[<>*()?]/g, "''$&");

演示:http://jsfiddle.net/8ar3Z/1/


参考文献:

  • Regex字符集:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#special-字符集
  • $1$&使用:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_string_as_a_parameter