主頁(yè) > 知識(shí)庫(kù) > js正則表達(dá)式學(xué)習(xí)筆記

js正則表達(dá)式學(xué)習(xí)筆記

熱門標(biāo)簽:宿遷智能外呼系統(tǒng)供應(yīng)商 鄂州人工智能電銷機(jī)器人軟件 實(shí)用地圖標(biāo)注app 地圖標(biāo)注商戶中心要收錢多少 地圖標(biāo)注字母的軟件 400免費(fèi)電話去哪申請(qǐng) 菏澤智能ai電銷機(jī)器人銷售公司 css百度地圖標(biāo)注位置顯示 線上教育ai外呼系統(tǒng)

正則表達(dá)式:對(duì)字符串中的信息實(shí)現(xiàn)查找、替換和提取操作。(不支持注釋和空白,必須寫在一行內(nèi))
正則表達(dá)式的創(chuàng)建:包含在一對(duì)斜杠之間的字符(直接量語(yǔ)法)
例如:

var pattern = /s$/;  // 創(chuàng)建一個(gè)正則來匹配所有以字母s結(jié)尾的字符串,并賦值給pattern

一 、字符類
將直接量字符單獨(dú)放進(jìn)方括號(hào)內(nèi)就組成了字符類。
一個(gè)字符類可以匹配它所包含的任意字符。
正則表達(dá)式的字符類:
[...]      方括號(hào)內(nèi)的任意字符
[^...]    不在方括號(hào)內(nèi)的任意字符
.           除換行符和其他Unicode行終止符之外的任意字符
\w        任何ASCII字符組成的單詞 等價(jià)于[a-zA-Z0-9]
\W        任何非ASCII字符組成的單詞 等價(jià)于[^a-zA-Z0-9]
\s         任何Unicode空白符
\S        任何非Unicode空白符
\d        任何ASCII數(shù)字 等價(jià)于[0-9]
\D        任何非ASCII數(shù)字 等價(jià)于[^0-9]
[\b]      退格直接量(特例)
例如:/[a,b,c]/       表示和字母a,b,c中的任意一個(gè)都匹配
   /[\s\d]/        表示匹配任意空白字符或者數(shù)字

二、重復(fù)
用以表示指定字符重復(fù)的標(biāo)記
正則表達(dá)式的重復(fù)字符語(yǔ)法:
{n,m}      匹配前一項(xiàng)至少n次,但不超過m次
{n,}     匹配前一項(xiàng)n次或者更多次
{n}      匹配前一項(xiàng)n次
?       匹配前一項(xiàng)0次或者1次,也就是前一項(xiàng)是可選的,等價(jià)于{0,1}
+         匹配前一項(xiàng)1次或多次,等價(jià)于{1,}
*          匹配前一項(xiàng)0次或多次,等價(jià)于{0,}

例如:/\d{2,4}/     匹配2~4個(gè)數(shù)字
   /\w{3}\d/    精確匹配3個(gè)單詞和一個(gè)可選數(shù)字

三、選擇、分組和引用
匹配程序:從左到右,如果左邊的匹配項(xiàng)匹配了,就自動(dòng)忽略右邊的匹配項(xiàng)(即使可以產(chǎn)生更好的匹配)
①     |    用于分隔供選擇的字符
   例如: /ab|cd|ef/      可以匹配字符串“ab”,"cd"或者“ef”
       /\d{3}|[a-z]{4}/       匹配3位數(shù)字或四個(gè)小寫字母
②  ()
作用一:把單獨(dú)項(xiàng)合成子表達(dá)式
作用二:在完整的模式中定義子模式
    當(dāng)一個(gè)正則表達(dá)式成功的和目標(biāo)字符串相匹配時(shí),可以從目標(biāo)字符串中抽出和圓括號(hào)中的子模式相匹配的部分。
    例如:
    /[a-z]+\d+/   檢索一個(gè)或多個(gè)小寫字母后邊跟著一個(gè)或多個(gè)數(shù)字
    如果我們關(guān)心的是每個(gè)尾部的數(shù)字,則可以把模式的數(shù)字部分放到括號(hào)(/[a-z]+(\d)/),這樣就可以從檢索到的匹配中抽取數(shù)字了
作用三:允許在同一正則表達(dá)式的后部引入前面的子表達(dá)式
    實(shí)現(xiàn)方法:在字符\后加一位或多位數(shù)字(這個(gè)數(shù)字指定了帶圓括號(hào)的子表達(dá)式在正則表達(dá)式中的位置)
    例如:\1    引用的是第一個(gè)帶圓括號(hào)的子表達(dá)式
    注: 位置以參與計(jì)數(shù)的左括號(hào)位置為準(zhǔn);
    正則表達(dá)式不允許用雙引號(hào)括起的內(nèi)容中有單引號(hào),反之亦然。
總結(jié):
|       選擇,匹配的是該字符左邊的子表達(dá)式或右邊的子表達(dá)式
(...)      組合,將幾個(gè)項(xiàng)組合成一個(gè)單元
(...?)    只組合,把項(xiàng)組合到一個(gè)單元,但不記憶與該組相匹配的字符
\n        和第n個(gè)分組第一次匹配的字符相匹配,組是圓括號(hào)中的子表達(dá)式,組索引是從左到右的左括號(hào)數(shù),(?: 這個(gè)形式的分組不參與索引編碼
四、指定匹配的位置:
錨 :
指定匹配發(fā)生的合法位置
^    匹配字符串的開頭
$    匹配字符串的結(jié)尾
\b   匹配一個(gè)單詞的邊界 (位于\w和\W之間的位置)
\B   匹配非單詞邊界的位置

五、修飾符

修飾符是放在//之外的,不會(huì)出現(xiàn)在兩條/線之間
i 不區(qū)分大小寫
g 全局匹配,找到所有匹配,而不是找到第一個(gè)之后就停止
m 多行匹配

六、 用于模式匹配的String對(duì)象的方法
方法一: search() 檢索與之匹配的位置
參數(shù):一個(gè)正則表達(dá)式
返回:第一個(gè)與之匹配的子串的起始位置,如果找不到匹配的子串,返回-1
例如:

script>
 "javascript".search(/script/i);  //返回值為4  
/script>

注:① 如果search()的參數(shù)不是正則表達(dá)式,則會(huì)通過RegExp構(gòu)造函數(shù)將他轉(zhuǎn)換成正則表達(dá)式
      ② search()不支持全局檢索
方法二: replace() 執(zhí)行檢索與替換操作
參數(shù):第一個(gè)-->正則表達(dá)式
   第二個(gè)-->要進(jìn)行替換的字符串(也可是一個(gè)函數(shù),該函數(shù)能動(dòng)態(tài)的計(jì)算替換字符串)
注:① 支持g,
    正則表達(dá)式中設(shè)置了g:所有與模式匹配的子串都將替換成第二個(gè)參數(shù)指定的字符串
      正則表達(dá)式中沒設(shè)置g:只替換所匹配的第一個(gè)子串
 ?、?如果第一個(gè)參數(shù)不是正則,而是一個(gè)字符串時(shí),replace()將直接搜索這個(gè)字符串

例如:將所有不區(qū)分大小寫的javascript都替換成大小寫正確的JavaScript

script>
 var str = "javascript,javascript,javascript,javaScript";
 alert(str.replace(/javascript/gi,"JavaScript"));  //JavaScript,JavaScript,JavaScript,JavaScript
/script>

方法三 : match()
參數(shù):正則表達(dá)式
返回:由匹配結(jié)果組成的數(shù)組
支持g
實(shí)例一:

script>
 var math = "1 plus 2 equals 3".match(/\d+/g);
 console.log(math);  // ["1", "2", "3"]
 console.log(typeof math);  //object
/script>  

實(shí)例二:

script>
 var math = "1 plus 2 equals 3".match(/\d/);
 console.log(math);  // ["1", index: 0, input: "1 plus 2 equals 3"]
 console.log(typeof math);  //object
/script>

注意:
給字符串的math()傳入一個(gè)非全局的正則表達(dá)式:
匹配情況:只檢索第一個(gè)匹配
返回值:數(shù)組
    數(shù)組第一個(gè)元素:所匹配的字符串
    數(shù)組第二個(gè)元素:正則表達(dá)式中用圓括號(hào)括起來的子表達(dá)式,返回的數(shù)組有兩個(gè)屬性-->index和input

方法四: split()
返回值:數(shù)組
分隔符:split()的參數(shù)
例如:

script>
 var str= "1,2,3,4,5,6,7,8".split(',');
 console.log(str); //["1", "2", "3", "4", "5", "6", "7", "8"]
/script>

參數(shù)是正則表達(dá)式時(shí)(可以指定分隔符,允許兩邊可以留任意多的空白符)
返回:用以調(diào)用它的字符串拆分為一個(gè)子字符串組成的數(shù)組

script>
 var str= "1,2,3,4,5,6,7,8".split(/\s*,\s*/);  //允許兩邊留任意多的空白符
 console.log(str);  //["1", "2", "3", "4", "5", "6", "7", "8"]
/script>

七、RegExp 對(duì)象

RegExp()構(gòu)造函數(shù):
參數(shù):兩個(gè)字符串參數(shù)
第一個(gè):正則表達(dá)式的主體部分(兩個(gè)斜杠之間的文本)
第二個(gè):(可選)指定正則表達(dá)式的修飾符(g,i,m這三者或這三者的組合)
注意:無(wú)論是字符串直接量還是正則表達(dá)式都使用/字符作為轉(zhuǎn)譯字符的前綴
例如:

var zipCode = new RegExp('\\d{5}','g'); //全局匹配字符串中的5個(gè)數(shù)字,注意這里是//而不是/

以上就是為大家整理的關(guān)于js正則表達(dá)式學(xué)習(xí)筆記,希望對(duì)大家學(xué)習(xí)js正則表達(dá)式有所幫助。

您可能感興趣的文章:
  • 正則表達(dá)式模式匹配的String方法
  • js 正則表達(dá)式學(xué)習(xí)筆記之匹配字符串
  • JavaScript 通過模式匹配實(shí)現(xiàn)重載
  • JavaScript學(xué)習(xí)筆記整理_用于模式匹配的String方法

標(biāo)簽:恩施 綿陽(yáng) 三亞 咸陽(yáng) 池州 鞍山 六安 梅州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《js正則表達(dá)式學(xué)習(xí)筆記》,本文關(guān)鍵詞  正則,表達(dá)式,學(xué)習(xí),筆記,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《js正則表達(dá)式學(xué)習(xí)筆記》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于js正則表達(dá)式學(xué)習(xí)筆記的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章