最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文帶你搞懂JavaScript中轉(zhuǎn)義字符的使用

 更新時(shí)間:2023年02月22日 16:08:36   作者:jimojianghu  
說起轉(zhuǎn)義字符,大家最先想到的肯定是使用反斜杠,這也是我們最常見的,很多編程語言都支持。除了反斜杠以外,在前端開發(fā)中,還有其他幾種轉(zhuǎn)義字符,也是較常見的,本文將對這些做一個(gè)總結(jié)

說起轉(zhuǎn)義字符,大家最先想到的肯定是使用反斜杠,這也是我們最常見的,很多編程語言都支持。

轉(zhuǎn)義字符從字面上講,就是能夠轉(zhuǎn)變字符原本的意義,得到新的字符。常用在特殊字符的顯示以及特定的編碼環(huán)境中。

除了反斜杠以外,在前端開發(fā)中,還有其他幾種轉(zhuǎn)義字符,也是較常見的,本文將對這些做一個(gè)總結(jié)。

字符串中的轉(zhuǎn)義

使用反斜杠來表示轉(zhuǎn)義字符時(shí),主要是在字符串中使用。這里就需要了解字符集和編碼等知識,具體可見前文前端開發(fā)中需要搞懂的字符編碼

字符集就是字符的集合,最常見的 ASCII字符集、Unicode字符集等:

ASCII的任一個(gè)字符都可以被轉(zhuǎn)義,使用的就是反斜杠加上數(shù)字編碼,特殊的也能使用反斜杠加上字母。

Unicode,也能進(jìn)行轉(zhuǎn)義,使用則是反斜杠加上碼點(diǎn)。由于Unicode包含了ASCII的所有字符,且編碼一致,所以都可算編碼轉(zhuǎn)義,而現(xiàn)在前端編程所涉及到的已經(jīng)都是Unicode字符。

一般,反斜杠(\)在字符串中有特殊的含義,用來和后面的字符一起組合表示一些特殊字符,所以又被稱為轉(zhuǎn)義符。

反斜杠后面可以跟著的字符大致有以下幾種:

  • 字母
  • 三位八進(jìn)制
  • x 加上 兩位十六進(jìn)制
  • Unicode碼點(diǎn)

字母

轉(zhuǎn)義字符中最基礎(chǔ)的就是:使用反斜杠\加上字母,表示那些無法輸入表示特殊含義的字符,常見的有以下幾種:

  • \b 后退鍵
  • \f 換頁符
  • \n 換行符
  • \r 回車鍵
  • \t 制表符
  • \v 垂直制表符

以前在字符串拼接時(shí),就經(jīng)常使用\n、\t:

  "\n      " +
  console.log('test') +
  "\n    "

需要注意的是,這些字母是特殊的可應(yīng)用于轉(zhuǎn)義的字母。

如果是非特殊字母,加上反斜杠,則會(huì)忽略反斜杠,很多字符也是同樣忽略反斜杠:

'\a' // 'a'
'\"' // '"'
'\?' // '?'

十六進(jìn)制數(shù)字

十六進(jìn)制更常用,它的轉(zhuǎn)義規(guī)則:\x<hex>\x后跟上2位十六進(jìn)制數(shù)。

因?yàn)橹挥袃晌唬秶牵?x00-0xFF,所以這種方式也只能輸出265種字符,其中:

  • 0x00-0x7F 和ASCII碼一致
  • 0x80-0x9F 表示控制字符
  • 0xA0-0xFF 表示文字字符
'\xA9' // '?'
'\x75' === 'u' // true
'\x67' // 'g'

八進(jìn)制數(shù)字

反斜杠后面跟3位八進(jìn)制數(shù)(),就代表一個(gè)轉(zhuǎn)義字符:

'\251' // '?'
'\165' === 'u' // true
'\106' // 'F'

取值范圍:000-377,總共也是有256種字符,其中就包含了所有的ASCII碼。

八進(jìn)制和十六進(jìn)制能轉(zhuǎn)義的字符是一樣的,進(jìn)行進(jìn)制轉(zhuǎn)換即可,見前文搞懂JavaScript中的進(jìn)制與進(jìn)制轉(zhuǎn)換。

在JS中,用這兩種方式的轉(zhuǎn)義字符是相等的:

'\xA9' === '\251' // true
'\200' === '\x80' // true

Unicode碼點(diǎn)

提到Unicode,首先需明確的一點(diǎn),JS中的字符串是基于Unicode的UTF-16編碼方式。

Unicode字符規(guī)定了碼點(diǎn)和字符平面。

碼點(diǎn)使用從U+0000到U+10FFFF的方位來表示所有的字符。

如果直接使用碼點(diǎn)來轉(zhuǎn)義所有的Unicode字符,則使用規(guī)則:\u{<hex>}\u后跟上1-6位的十六進(jìn)制:

'\u{A9}' // '?'
'\u{597d}' // '好'
'\u{1f604}' // '??'

字符平面又分為基本平面和非基本平面。

其中對于基本平面(65536個(gè)字符)的字符,轉(zhuǎn)義規(guī)則:\u<hex>,\u后跟上4位十六進(jìn)制數(shù):

'\u00A9' // "?"
'\u0075' === 'u' // true
'\u597d' // '好'

對于非基本平面的字符,則要使用UTF-16的碼元規(guī)則,一般是兩個(gè)碼元:\u<hex>\u<hex>,\u后各4位十六進(jìn)制:

'\uD83D\uDE04' // '??'
'\uD83C\uDF34' // '??'

只要獲取到字符的Unicode編號碼點(diǎn),即可以通過這種方式轉(zhuǎn)義所有的字符。

正則表達(dá)式中的轉(zhuǎn)義

在正則表達(dá)式中有許多特殊的符號,起著不同的作用,但如果要匹配這些特殊符號本身,就需要用到轉(zhuǎn)義了。

這里的轉(zhuǎn)義字符也是使用反斜杠,后面跟上需要匹配的符號,即可,如:\+ 匹配加號。

在正則表達(dá)式中,需要反斜杠轉(zhuǎn)義匹配的字符,一共是12個(gè):^ . [ $ ( ) | * + ? { \,這些字符都是正則的特殊字符。

/5$/.test('5$') // false
/5\$/.test('5$') // true

上面代碼,$符號加了轉(zhuǎn)義才能匹配成功,否則不匹配。

當(dāng)使用RegExp方法時(shí),正則參數(shù)是字符串,反斜杠\需要2個(gè),因?yàn)樽址畠?nèi)會(huì)先轉(zhuǎn)義一次:

(new RegExp('5$')).test('5$') // false
(new RegExp('5\$')).test('5$') // false
(new RegExp('5\\$')).test('5$') // true

上面代碼中,只有第三行因?yàn)槭褂昧藘蓚€(gè)反斜杠,才能轉(zhuǎn)義成功,得到正確的值。

HTML中的轉(zhuǎn)義

HTML中轉(zhuǎn)義字符也是較常見的,主要有三種形式的轉(zhuǎn)義。

最常見的是基于實(shí)體名稱

& 后加上實(shí)體名稱 再加上分號 ;

空格   
大于號 > &gt;

實(shí)體名稱轉(zhuǎn)義以前是為了處理html中的特殊的字符顯示問題,比如小于號 <在THML中是作為元素標(biāo)簽的一部分使用的,作為特殊字符,直接輸入會(huì)出錯(cuò)。

但目前在現(xiàn)代瀏覽器上,已經(jīng)能正常顯示大于小于號這些符號,可以不使用轉(zhuǎn)義字符。

另兩種是基于Unicode碼點(diǎn)

&#x 后加十六進(jìn)制碼點(diǎn) 再加上分號 ;

&#x1f604; => ??
&#x597d; => 好
&#x26; => &

&# 后加十進(jìn)制的碼點(diǎn) 再加上分號 ;

&#128516; => ??
&#22909; => 好
&#38; => &

基于實(shí)體名稱轉(zhuǎn)義的字符,也是被包含在Unicode字符集中的,所以也可以使用碼點(diǎn)來進(jìn)行轉(zhuǎn)義。

在HTML中最常用到的轉(zhuǎn)義字符,可見下面整理的表格:

字符名稱名稱轉(zhuǎn)義碼點(diǎn)轉(zhuǎn)義
"雙引號&quot;&#34;
&和號&amp;&#38;
<小于號&lt;&#60;
>大于號&gt;&#62;
'單引號&apos;&#39;
空格空格&nbsp;&#160;
©版權(quán)號&copy;&#169;
&cent;&#162;
£&pound;&#163;
¥人名幣&yen;&#165;
$美元&dollar;&#36;
©版權(quán)&copy;&#169;
®注冊商標(biāo)&reg;&#174;
×乘號&times;&#215;
÷除號&divide;&#247;

URL轉(zhuǎn)義字符

另外,在web開發(fā)中,URL鏈接也是有編碼轉(zhuǎn)義的,特別是針對URL元字符和中文等特殊字符: http://baidu.com/中國 編碼轉(zhuǎn)義為 http%3A%2F%2Fbaidu.com%2F%E4%B8%AD%E5%9B%BD

可以使用encodeURIComponent 和 decodeURIComponent 對URL鏈接進(jìn)行編解碼處理。

URL中的轉(zhuǎn)義規(guī)則:根據(jù)系統(tǒng)的默認(rèn)編碼(一般是UTF-8),是使用百分號(%)加上兩位的十六進(jìn)制數(shù)。

實(shí)際的轉(zhuǎn)義,就是基于Unicode字符的碼點(diǎn),不過與字符串不太一樣,這里使用的一般是UTF-8編碼方式。

URL部分元字符的轉(zhuǎn)義:

元字符名稱轉(zhuǎn)義符
+加號%2B
空格空格%20
/斜杠%2F
?問號%3F
#井號%23
&和號%26
=等號%3D
:冒號%3A
@at符%40
,逗號%2C
;分號%3B

中文等特殊字符則被轉(zhuǎn)義成多個(gè)組合:

encodeURIComponent('http://baidu.com/中國??') // 'http%3A%2F%2Fbaidu.com%2F%E4%B8%AD%E5%9B%BD%F0%9F%98%84'

上面代碼中,

就有元字符的轉(zhuǎn)義:':' => %3A、'/' => %2F,

而中文則轉(zhuǎn)義成:中 => %E4%B8%AD、國 => %E5%9B%BD,

表情符號轉(zhuǎn)義成:?? => %F0%9F%98%84

到此這篇關(guān)于一文帶你搞懂JavaScript中轉(zhuǎn)義字符的使用的文章就介紹到這了,更多相關(guān)JavaScript轉(zhuǎn)義字符內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JavaScript JSON.stringify()的使用總結(jié)

    JavaScript JSON.stringify()的使用總結(jié)

    JSON是一種輕量級數(shù)據(jù)格式,可以方便地表示復(fù)雜數(shù)據(jù)結(jié)構(gòu)。JSON對象有兩個(gè)方法:stringify()和parse()。在簡單的情況下,這兩個(gè)方法分別可以將JavaScript序列化為JSON字符串,以及將JSON解析為原生JavaScript值。本文著重介紹JSON.stringify()的使用方法和注意事項(xiàng)。
    2021-05-05
  • 微信小程序仿美團(tuán)城市選擇

    微信小程序仿美團(tuán)城市選擇

    這篇文章主要為大家詳細(xì)介紹了微信小程序仿美團(tuán)城市選擇,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • JS實(shí)現(xiàn)將數(shù)據(jù)導(dǎo)出到Excel的方法詳解

    JS實(shí)現(xiàn)將數(shù)據(jù)導(dǎo)出到Excel的方法詳解

    這篇文章主要為大家介紹了JavaScript實(shí)現(xiàn)將數(shù)據(jù)導(dǎo)出到Excel的兩種方法詳解,文中的示例代碼簡潔易懂,感興趣的小伙伴可以動(dòng)手嘗試一下
    2022-06-06
  • JavaScript中String對象的方法介紹

    JavaScript中String對象的方法介紹

    本文主要對JavaScript中String對象的方法進(jìn)行介紹。具有一定的參考價(jià)值,下面跟著小編一起來看下吧
    2017-01-01
  • 微信小程序圖片上傳組件實(shí)現(xiàn)圖片拖拽排序

    微信小程序圖片上傳組件實(shí)現(xiàn)圖片拖拽排序

    最近在寫小程序過程中遇到一個(gè)拖拽排序需求,上網(wǎng)一頓搜索未果,遂自行實(shí)現(xiàn),下面這篇文章主要給大家介紹了關(guān)于微信小程序圖片上傳組件實(shí)現(xiàn)圖片拖拽排序的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • javascript 根據(jù)歌名獲取播放地址和歌詞內(nèi)容

    javascript 根據(jù)歌名獲取播放地址和歌詞內(nèi)容

    在前幾天做在線聽歌的過程中,碰到了根據(jù)歌名獲取播放地址和LRC文件內(nèi)容的問題,今晚花了幾個(gè)小時(shí)把接口整理了一下
    2009-06-06
  • JS中的事件委托實(shí)例淺析

    JS中的事件委托實(shí)例淺析

    這篇文章主要介紹了JS中的事件委托,結(jié)合實(shí)例形式簡單分析了javascript事件委托的概念、功能、使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2018-03-03
  • javascript設(shè)計(jì)模式 – 組合模式原理與應(yīng)用實(shí)例分析

    javascript設(shè)計(jì)模式 – 組合模式原理與應(yīng)用實(shí)例分析

    這篇文章主要介紹了javascript設(shè)計(jì)模式 – 組合模式,結(jié)合實(shí)例形式分析了javascript組合模式相關(guān)概念、原理、應(yīng)用場景及相關(guān)使用注意事項(xiàng),需要的朋友可以參考下
    2020-04-04
  • 使用JS實(shí)現(xiàn)動(dòng)態(tài)時(shí)鐘

    使用JS實(shí)現(xiàn)動(dòng)態(tài)時(shí)鐘

    這篇文章主要為大家詳細(xì)介紹了使用JS實(shí)現(xiàn)動(dòng)態(tài)時(shí)鐘,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 使用flutter創(chuàng)建可移動(dòng)的stack小部件功能

    使用flutter創(chuàng)建可移動(dòng)的stack小部件功能

    本文主要介紹我為桌面和 Web 設(shè)計(jì)的一個(gè)超級秘密 Flutter 項(xiàng)目使用了畫布和可拖動(dòng)節(jié)點(diǎn)界面。本教程將展示我如何使用堆棧來使用小部件完成可拖動(dòng)功能,需要的朋友可以參考下
    2021-10-10

最新評論

临夏县| 定州市| 万安县| 德化县| 靖远县| 翁源县| 涟水县| 万州区| 漾濞| 井冈山市| 南宫市| 麻城市| 修文县| 云林县| 左云县| 宜兴市| 随州市| 盐边县| 隆子县| 镇原县| 亚东县| 乳山市| 威海市| 孙吴县| 二连浩特市| 轮台县| 绿春县| 和平县| 清远市| 天镇县| 宁南县| 桂东县| 扬州市| 桑日县| 左贡县| 象州县| 广饶县| 潞城市| 璧山县| 当涂县| 蒲城县|