转义字符'\n'的含义是(转义字符在前端开发中的详细介绍)
说起转义字符 ,大家最先想到的肯定是使用反斜杠 ,这也是我们最常见的 ,很多编程语言都支持 。
转义字符从字面上讲 ,就是能够转变字符原本的意义 ,得到新的字符 。常用在特殊字符的显示以及特定的编码环境中 。
除了反斜杠以外 ,在前端开发中 ,还有其他几种转义字符 ,也是较常见的 ,本文将对这些做一个总结 。字符串中的转义
使用反斜杠来表示转义字符时 ,主要是在字符串中使用 。这里就需要了解字符集和编码等知识 ,具体可见前文 。
字符集就是字符的集合 ,最常见的 ASCII字符集 、Unicode字符集等:
ASCII的任一个字符都可以被转义,使用的就是反斜杠加上数字编码 ,特殊的也能使用反斜杠加上字母 。
Unicode ,也能进行转义,使用则是反斜杠加上码点 。由于Unicode包含了ASCII的所有字符 ,且编码一致 ,所以都可算编码转义 ,而现在前端编程所涉及到的已经都是Unicode字符 。
字符集和字符编码等具体知识 ,可见博文前端开发中需要搞懂的字符编码知识 。一般 ,反斜杠(\)在字符串中有特殊的含义 ,用来和后面的字符一起组合表示一些特殊字符 ,所以又被称为转义符 。
反斜杠后面可以跟着的字符大致有以下几种:
字母 三位八进制 x 加上 两位十六进制 Unicode码点字母
转义字符中最基础的就是:使用反斜杠\加上字母 ,表示那些无法输入表示特殊含义的字符 ,常见的有以下几种:
\b后退键 \f换页符 \n换行符 \r回车键 \t制表符 \v垂直制表符以前在字符串拼接时 ,就经常使用\n 、\t:
"\n " + console.log(test) + "\n "需要注意的是 ,这些字母是特殊的可应用于转义的字母 。
如果是非特殊字母 ,加上反斜杠,则会忽略反斜杠 ,很多字符也是同样忽略反斜杠: \a // a \" // " \? // ?十六进制数字
十六进制更常用 ,它的转义规则:\x
八进制数字
反斜杠后面跟3位八进制数() ,就代表一个转义字符:
\251 // © \165 === u // true \106 // F取值范围:000-377 ,总共也是有256种字符 ,其中就包含了所有的ASCII码 。
八进制和十六进制能转义的字符是一样的 ,进行进制转换即可 ,见前文 。
在JS中 ,用这两种方式的转义字符是相等的: \xA9 === \251 // true \200 === \x80 // trueUnicode码点
提到Unicode ,首先需明确的一点 ,JS中的字符串是基于Unicode的UTF-16编码方式。
Unicode字符规定了码点和字符平面 。码点使用从U+0000到U+10FFFF的方位来表示所有的字符 。
如果直接使用码点来转义所有的Unicode字符 ,则使用规则:\u{<hex>},\u后跟上1-6位的十六进制: \u{A9} // © \u{597d} // 好 \u{1f604} // ?字符平面又分为基本平面和非基本平面
其中对于基本平面(65536个字符)的字符 ,转义规则:\u<hex> ,\u后跟上4位十六进制数: \u00A9 // "©" \u0075 === u // true \u597d // 好对于非基本平面的字符,则要使用UTF-16的码元规则 ,一般是两个码元:\u<hex>\u<hex> ,\u后各4位十六进制:
\uD83D\uDE04 // ? \uD83C\uDF34 // ?只要获取到字符的Unicode编号码点 ,即可以通过这种方式转义所有的字符 。
正则表达式中的转义
在正则表达式中有许多特殊的符号 ,起着不同的作用 ,但如果要匹配这些特殊符号本身 ,就需要用到转义了 。
这里的转义字符也是使用反斜杠 ,后面跟上需要匹配的符号 ,即可 ,如:\+ 匹配加号 。在正则表达式中 ,需要反斜杠转义匹配的字符 ,一共是12个:^ . [ $ ( ) | * + ? { \ ,这些字符都是正则的特殊字符 。
/5$/.test(5$) // false /5\$/.test(5$) // true上面代码,$符号加了转义才能匹配成功 ,否则不匹配 。
当使用RegExp方法时 ,正则参数是字符串,反斜杠\需要2个 ,因为字符串内会先转义一次:
(new RegExp(5$)).test(5$) // false (new RegExp(5\$)).test(5$) // false (new RegExp(5\\$)).test(5$) // true上面代码中 ,只有第三行因为使用了两个反斜杠 ,才能转义成功 ,得到正确的值 。
HTML中的转义
HTML中转义字符也是较常见的 ,主要有三种形式的转义 。
最常见的是基于实体名称:
& 后加上实体名称 再加上分号 ;: 空格 大于号 > >实体名称转义以前是为了处理html中的特殊的字符显示问题 ,比如小于号 <在THML中是作为元素标签的一部分使用的 ,作为特殊字符 ,直接输入会出错 。
但目前在现代浏览器上 ,已经能正常显示大于小于号这些符号 ,可以不使用转义字符 。
另两种是基于Unicode码点:
&#x 后加十六进制码点 再加上分号 ;: 😄 => ? 好 => 好 & => & &# 后加十进制的码点 再加上分号 ;: 😄 => ? 好 => 好 & => &基于实体名称转义的字符 ,也是被包含在Unicode字符集中的 ,所以也可以使用码点来进行转义 。
在HTML中最常用到的转义字符,可见下面整理的表格: 字符 名称 名称转义 码点转义 " 双引号 " " & 和号 & & < 小于号 < <|大于号|>|>
|单引号|'|
空格|空格| |
©|版权号|©|©
¢|分|¢|¢
£|镑|£|£
¥|人名币|¥|¥
$|美元|$|$
©|版权|©|©
®|注册商标|®|®
×|乘号|×|×
÷|除号|÷|÷URL转义字符
另外 ,在web开发中 ,URL链接也是有编码转义的,特别是针对URL元字符和中文等特殊字符:
http://baidu.com/中国 编码转义为 http%3A%2F%2Fbaidu.com%2F%E4%B8%AD%E5%9B%BD可以使用encodeURIComponent 和 decodeURIComponent 对URL链接进行编解码处理。
URL中的转义规则:根据系统的默认编码(一般是UTF-8) ,是使用百分号(%)加上两位的十六进制数 。
实际的转义 ,就是基于Unicode字符的码点 ,不过与字符串不太一样 ,这里使用的一般是UTF-8编码方式 。
URL部分元字符的转义:
元字符 名称 转义符 + 加号 %2B 空格 空格 %20 / 斜杠 %2F ? 问号 %3F # 井号 %23 & 和号 %26 = 等号 %3D : 冒号 %3A @ at符 %40 , 逗号 %2C ; 分号 %3B中文等特殊字符则被转义成多个组合:
encodeURIComponent(http://baidu.com/中国?) // http%3A%2F%2Fbaidu.com%2F%E4%B8%AD%E5%9B%BD%F0%9F%98%84上面代码中 ,
就有元字符的转义:: => %3A 、/ => %2F ,
而中文则转义成:中 => %E4%B8%AD 、国 => %E5%9B%BD ,
表情符号转义成:? => %F0%9F%98%84。创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!