匹配单反斜杠的问题(单反斜杠与转义字符冲突)
场景:
需要存放到数据库中的字符串含有单反斜杠,在进入数据库后会被过滤掉,造成出库的时候数据格式不对,无法使用。
所以就想要把单反斜杠变成双反斜杠,然后入数据库的时候会被转义成单反斜杠,从而可以保持数据正确的格式。
问题是:
怎么把\变成其他字符,问题是这个反斜杠刚好就是转义的意思,这个时候冲突了!
所以是没办法把\转变成其他字符的。你不相信?请看如下测试:
解决方案:
既然这样,那我们就绕开这么一个坑吧。解决方法如下,仔细看好了哦!
1.把原文本字符串转换成base64编码,这样数据存入mysql的时候反斜杠就不会因为转义而被过滤掉了。
2.从数据库拿出数据的时候,把数据通过base64解码。从而保证了出库和入库的数据统一性。
附示例base64处理代码:
入库:
var b = new Buffer('JavaScript'); var s = b.toString('base64'); // SmF2YVNjcmlwdA==
出库:
var b = new Buffer('SmF2YVNjcmlwdA==', 'base64') var s = b.toString(); // JavaScript