js中反斜杠\的一些研究


在学习正则的时候遇到一些困惑,自己研究了一下,记录如下:

在js中,打印一个由反斜杠和字母组成的字符串时,会出现三种情况

  第一种,只打印字母,不打印反斜杠

    包含字母:a c d e g h i j k l m o p q s w y z

  第二种,什么都不打印

    包含字母:b f n r t v

  第三种,报错

    包含字母:u x

对于第二种和第三种情况,说明这些是特殊符合,整理如下:

  \b  退格符 其unicode的编码为8

  \f   换页符

  \n  换行符

  \r  回车符

  \t  水平制表符

  \v  垂直制表符

  \u  unicode 码,一般其后跟 4 个 16 进制数,因此,一般为 unicode-16,例如 \u4f60 表示 你

  \x  16 进制的意思,后边跟两位,则表示单字节编码,例如 \xA7 表示 §

 

利用正则将 / 替换为 \ 时相对容易,但是反过来替换就会很麻烦,解决办法

  1,交给后端-。-

  2,在body中加一个隐藏的input,并将要转换的字符串设置成起value,这一操作可以将\b(编码为\u0008)从底层编码级别拆分成\(\u0092编码)和b(编码\u0098)。从而可以实现匹配和替换操作。

3,\b的unicode编码为\u0008,可以将\u0008作为正则表达式进行匹配和替换

 

复制代码
 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <title>test</title>
 5 <script>
 6 var w = function(str=""){document.write(str+"<br>")};
 7 str="a\b\c\defg";
 8 w("str.charCodeAt(1): "+str.charCodeAt(1));
 9 w(String.fromCharCode(8));
10 str1 = str.replace(/\\/, '');
11     str1 = str1.replace(/\u0008/,'b');
12 w("str1: "+str1);
13 </script>
14 </head>
15 <body>
16 <input type="text" name="" value = "a\b\c\defg" style="display:none">
17 <script>
18     str = document.getElementsByTagName('input')[0].value;
19     w("str.charCodeAt(1): "+str.charCodeAt(1));
20     w(String.fromCharCode(92));
21     w("str: "+str);
22     str1 =str.replace(/\\/g, "");
23     w("str1: "+str1);
24 </script>
25 </body>
26 </html>
复制代码

 

posted @   anch  阅读(1272)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示