关于js怎样替换反斜杠和单引号的问题

JavaScript034

关于js怎样替换反斜杠和单引号的问题,第1张

在json数据转义中遇到的一个小问题

一、因为后端传过来的数据的字符串是单引号,所以我这边不能直接直接进行json转义

所以我就把单引号替换成",这样就可以直接把字符串转换成对象的格式,然后来取里面的数据

二、字符串中多个反斜杠,直接转义取数据时报错问题

所以我直接把反斜杠去掉

String.prototype.replace方法的替换变量只支持以下几种

$$插入一个$

$& 插入匹配的子串

$`插入匹配的子串前面的未匹配部分

$'插入匹配的子串后面未匹配的部分

$n插入正则的第n个匹配的分组内容

\1这种形式是不支持的,因为\1在字符串中会被认识是charcode为1的空白字符

java replaceAll() 方法要用 4 个反斜杠,表示一个反斜杠

例如 str1="aa\bbb"str2="aa'bbb"

要想替换成 str1="aa\\bbb"str2="aa\'bbb"

必须这样替换:

str1 = str1.replaceAll("\\\\", "\\\\\\\\")

str2 = str2.replaceAll("'", "\\\\'")

原因如下:

String 的 replaceAll() 方法,实际是采用正则表达式的规则去匹配的,

\\\\ ,java解析为\\交给正则表达式, 正则表达式再经过一次转换,把\\转换成为\

也就是java里面要用正则来表示一个\. 必须写成4个\

如果要表示\\,那就要写8个\

所以如果写成: str1 = str1.replaceAll("\\", "\\\\")

就会报正则表达式的错误。