国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

正則表達(dá)式JavaScript版本回顧筆記

tigerZH / 801人閱讀

摘要:以指定模式分割字符串,返回結(jié)果為數(shù)組。為什么牢記,有什么用看代碼查找連續(xù)的相同的數(shù)字或者內(nèi)容是用子表達(dá)式只有字表達(dá)是中匹配的內(nèi)容才保存到緩存,這種行為叫捕獲。

前言

正則表達(dá)式之所以強(qiáng)大,是因?yàn)槠淠軐?shí)現(xiàn)模糊匹配,精確匹配沒(méi)有任何價(jià)值。

正則表達(dá)式學(xué)習(xí)筆記 第一章 JavaScript原型對(duì)象與原型鏈 1.1 正則表達(dá)式概念

RegExp:是正則表達(dá)式(regular expression)的簡(jiǎn)寫,RegExp描述了一種字符串匹配的模式,可以用來(lái)檢查一個(gè)字符串是含有某種子串,將匹配的子串做替換或者從某個(gè)串中取出來(lái)符合某個(gè)條件的子串等。

1.2 正則表達(dá)式的用處

數(shù)據(jù)隱藏,數(shù)據(jù)采集(爬蟲(chóng)),數(shù)據(jù)過(guò)濾,數(shù)據(jù)驗(yàn)證(表單驗(yàn)證,手機(jī)號(hào)碼,郵箱地址等),解析、格式檢查等。

正則的定義格式也很簡(jiǎn)單:

var t="ahmatbekjappar";

var reg=/j/;
console.log(reg.test(t));//判斷我們查找字符是否存在,存在返回true
第二章 標(biāo)準(zhǔn)庫(kù)中的正則對(duì)象 2.1 創(chuàng)建正則對(duì)象

創(chuàng)建正則對(duì)象的方法有兩種:實(shí)際開(kāi)發(fā)中一般都采用字面量創(chuàng)建方法

1.字面量創(chuàng)建法:以斜杠表示開(kāi)始和結(jié)束;

2.構(gòu)造函數(shù)生成對(duì)象:通過(guò)實(shí)例化得到對(duì)象;

var t="ahmatbekjappar";

var reg1=/j/;//方式1
var reg2=new RegExp("j");//方式2

console.log(reg1.test(t));
console.log(reg2.test(t));

區(qū)別:

相同點(diǎn):效果完全一樣,也就是等價(jià)的

不同點(diǎn):第一種方法是編譯時(shí)新建正則表達(dá)式,第二種方法在運(yùn)行時(shí)新建正則表達(dá)式,也就是創(chuàng)建時(shí)機(jī)不一樣。

2.2 匹配模式

正則表達(dá)式是匹配模式,要么匹配字符,要么匹配位置

匹配模式指的是修飾符,表示正則匹配的附加規(guī)則,放在正則模式的最后面(尾部)。修飾符可以單個(gè)使用,也可以是多個(gè)一起用。

格式:var reg=/正則表達(dá)式/匹配模式;

在正則表達(dá)式中,匹配模式常用的兩種形式:g和i

g:global縮寫,代表全局匹配,匹配出所有滿足條件的結(jié)果,不加g的話第一次匹配成功后正則對(duì)象就停止繼續(xù)匹配。

i:ignore縮寫,代表忽略大小寫,正則匹配時(shí)默認(rèn)區(qū)分大小寫,加了i就自動(dòng)忽略字符串大小寫

var t="AklmanAhmatbeK";

var reg1=/akl/;
var reg2="akl/i;
console.log(reg1.test(t));//false
console.log(reg1.test(t));//true
2.3 正則對(duì)象的方法

對(duì)象.test(str):判斷字符串是否具有指定模式的子串,返回結(jié)果是一個(gè)布爾值;

對(duì)象.exec(str):返回字符串指定模式的子串,一次只能獲取一個(gè)與匹配的結(jié)果;


    
    

2.4 String對(duì)象的方法

search(reg):與indexOf非常相似,返回指定模式的子串在字符串首次穿線的位置。

match(reg):以數(shù)組的形式返回指定模式的字符串,可以返回所有匹配的結(jié)果。

replace(reg,"將替換的字符"):把指定模式的子串進(jìn)行替換操作。

split(reg):以指定模式分割字符串,返回結(jié)果為數(shù)組。


    
    

第三章 要牢記住的概念

子表達(dá)式:在正則表達(dá)式中,通過(guò)一對(duì)圓括號(hào)起來(lái)的內(nèi)容,被稱之為“子表達(dá)式”;var reg=/d(d)d/gi;

捕獲:在正則表達(dá)式中,子表達(dá)式匹配到相應(yīng)的內(nèi)容時(shí),系統(tǒng)會(huì)自動(dòng)捕獲這個(gè)行為,然后將子表達(dá)式匹配到的內(nèi)容放入系統(tǒng)的緩存中,這過(guò)程就是“捕獲”。

反向引用:在正則表達(dá)式中,可以使用n(n>0,正整數(shù),代表系統(tǒng)中的緩存區(qū)編號(hào))來(lái)獲取緩沖區(qū)中的內(nèi)容,這個(gè)過(guò)程就是“反向引用”。

為什么牢記,有什么用?看代碼:查找連續(xù)的相同的數(shù)字或者內(nèi)容是用

第四章 正則表達(dá)式應(yīng)用 4.1 正則表達(dá)式的組成

正則表達(dá)式是由普通字符(例如字符a到z)以及特殊字符(成為元字符)組成的文字模式。正則表達(dá)式作為一個(gè)模板,將某個(gè)字符模式與所搜索的字符串進(jìn)行匹配。正則表達(dá)式三步走:1.查什么?2.查多少?3.從哪查?

4.2 匹配符(查什么)

匹配符:字符匹配符用于匹配某個(gè)或某些字符;例如d就是匹配0-9的數(shù)字。

在正則表達(dá)式中,通過(guò)一對(duì)中括號(hào)起來(lái)的內(nèi)容,稱之為"字符簇"。字符簇代表的是一個(gè)范圍,但是匹配時(shí),只能匹配某個(gè)范圍中的固定的結(jié)果。

字符簇 含義
[a-z] 匹配字符a到字符z之間的任一字符
[A-Z] 匹配字符A到字符Z之間的任一字符
[0-9] 匹配數(shù)字0到9之間的任一數(shù)字
[0-9a-z] 匹配數(shù)字0到9或者字符a到z之間的任一字符
[0-9a-zA-Z] 匹配數(shù)字0到9或字符a到字符z之或者字符A到字符Z之間的任一字符
[abcd] 匹配字符a或者字符b或者字符c或者字符d
[1234] 匹配字符1或者字符2或者字符3或者字符4

在字符簇中,通過(guò)一個(gè)^(脫字符)來(lái)表示取反的含義:

字符簇 含義
1 匹配除字符a到字符z之外的任一字符
2 匹配除字符a,b,c,d外的字符
3 匹配除數(shù)字0到9之外的任一字符

常用的比較特殊的匹配符:

字符簇 含義
d 匹配一個(gè)數(shù)字字符,與使用[0-9]等價(jià)
D 匹配一個(gè)非數(shù)字字符,還可以使用[脫字符0-9]
w 匹配包括下劃線的任何字母數(shù)字下劃線字符,還可以使用[0-9a-zA-Z]
W 匹配任何非字母數(shù)字下劃線字符,還可以[脫字符w]
s 匹配任何空白字符
S 匹配任何非空白字符,還可以使用[脫字符s]
.(是個(gè)點(diǎn)) 匹配除"n"之外的任何單個(gè)字符
[u4e00-u9fa5] 匹配中文字符中的任一字符
4.3 限定符(查多少)

限定符可以指定正則表達(dá)式的一個(gè)給定字符必須要出現(xiàn)多少次才能滿足匹配。

字符簇 含義
* 匹配前面的子表達(dá)式零次或多次,0到多
+ 匹配前面的子表達(dá)式一次或多次,1到多
? 匹配前面的子表達(dá)式零次或一次,0或1
{n} 匹配確定的 n 次
{n,} 至少匹配n 次
{n,m} 最少匹配 n 次且最多匹配 m 次

對(duì)qq號(hào)碼進(jìn)行校驗(yàn)要求5-10位,不能以0開(kāi)頭,只能是數(shù)字

var str="我的QQ20869921366666666666,nsd你的是6726832618嗎?";
// var reg=/d{3,7}/;

var reg=/[1-9]d{4,10}/g;//正則表達(dá)式默認(rèn)情況下使用貪婪模式,在滿足條件的前提下盡量多的查找匹配
console.log(str.match(reg));

var reg1=/[1-9]d{4,10}?/;//非貪婪模式,惰性模式:在滿足條件的前提下,盡量的少查找匹配
console.log(str.match(reg1));

//?跟在表達(dá)式后面是限定符{0,1}
//?跟在限定符后面,使用惰性模式(非貪婪模式)
var reg2=/[1-9]d??/;
//reg2和reg3是一個(gè)意思
var reg3=/[1-9]d{0,1}?/;
console.log(str.match(reg2));
console.log(str.match(reg3));

正則表達(dá)式中默認(rèn)情況下能匹配多就不會(huì)匹配少,這種匹配模式就是貪婪模式(貪婪匹配)。

如果想少匹配或者限定的位數(shù)匹配則使用非貪婪模式,也就是優(yōu)先匹配滿足條件情況下的優(yōu)先匹配少的,這種非貪婪模式也被稱為惰性匹配

4.4 定位符(從哪查)

正則表達(dá)式只會(huì)到字符串去尋找是否有與之匹配的內(nèi)容,如果有就默認(rèn)是正確的,就不會(huì)考慮其字符串本身是否 合法的。因此必須使用定位符來(lái)將一個(gè)正則表達(dá)式固定在一行的開(kāi)始或者結(jié)束;也可以創(chuàng)建只在單詞內(nèi)或者只在單詞的開(kāi)始或結(jié)尾處出現(xiàn)的正則表達(dá)式。

字符簇 含義
^ 匹配輸入字符串的開(kāi)始位置
$ 匹配輸入字符串的結(jié)束位置
b 匹配一個(gè)單詞邊界
B 匹配非單詞邊界
注意:脫字符放在字符簇中是取反的意思,放在整個(gè)表達(dá)式中是開(kāi)始位置的。

問(wèn)題1:用正則表達(dá)式,匹配字符串"lsd15309873475"中的的手機(jī)號(hào)

/**分析
*手機(jī)號(hào)第一位必須是1,第二位必須是3-8之間的數(shù)字,第三位到第十一位是只要0-9之間的數(shù)字即可
**/
var str="lsd15309873475";
var reg1=/1[345678]d{9}/;
console.log(str.match(reg1));//給5分

var reg2=/^1[34578]d{9}$/;
console.log(str.match(reg2));//給滿分

問(wèn)題2:

var str = "i am zhangsan";
//an必須是一個(gè)完整的單詞
var reg = /an/;
console.log(str.match(reg));
//an不能是單詞的開(kāi)始,只能是單詞的結(jié)束
var reg1 = /Ban/;
console.log(str.match(reg1));
4.5 轉(zhuǎn)義字符

因?yàn)樵谡齽t表達(dá)式中 .(點(diǎn)) + 等是屬于表達(dá)式的一部分,但是我們?cè)谄ヅ鋾r(shí),字符串中也需要匹配
這些特殊字符,所以,我們必須使用 反斜杠 對(duì)某些特殊字符進(jìn)行轉(zhuǎn)義;

需要轉(zhuǎn)義的字符
點(diǎn).
小括號(hào)()
中括號(hào)[]
左斜杠/
右斜杠
選擇匹配符

問(wèn)題1:匹配一個(gè)合法的網(wǎng)址URL:

var str="http://aklman.com";
//對(duì)于. /都必須轉(zhuǎn)義匹配
var reg=/w+://w+.w+/;
console.log(str.match(reg));//http://aklman.com

問(wèn)題2:使用正則表達(dá)式驗(yàn)證郵箱是否合法

var str="ak@aklman.com";
var reg=/w+@[0-9a-z]+(.[0-9a-z]{2,6})+/;
console.log(str.match(reg));
4.6 或者的用法

查找所有的蘋果產(chǎn)品:

var s="ipad ipod iphone imac itouch iamshuai";

var reg=/i(pad|pod|phone|mac|touch)/g;

console.log(s.match(reg));
4.7 預(yù)查 4.7.1 正向預(yù)查,正預(yù)測(cè),前瞻,先行斷言

問(wèn)題1:請(qǐng)把ing結(jié)尾的單詞的詞根部分(即不含ing部分)找出來(lái):

var str="sorry,when i am working,do not calling me!";
//只是為了找到ing結(jié)尾的單詞,但并不是詞根部分
var reg1=/w+ing/g;//["working", "calling"]

var reg2=/w+(?=ing)/g;//["work", "call"]
console.log(str.match(reg1));
console.log(str.match(reg2));
4.7.2 負(fù)向預(yù)查,負(fù)預(yù)測(cè),前瞻,先行否言

問(wèn)題2:把不是ing結(jié)尾的單詞找出來(lái)

var str="sorry,when i am working,do not calling me!";
var reg=/w+(?!ing)w{3}/g;//負(fù)向預(yù)查、負(fù)預(yù)測(cè)、前瞻
console.log(str.match(reg));//["sorry", "when"]
補(bǔ)充知識(shí)點(diǎn)
量詞 含義
n+ 匹配任何包含至少一個(gè) n 的字符串
n* 匹配任何包含零個(gè)或多個(gè) n 的字符串
n? 匹配任何包含零個(gè)或一個(gè) n 的字符串
n{x} 匹配包含 X 個(gè) n 的序列的字符串
n{x,y} 匹配包含 X 至 Y 個(gè) n 的序列的字符串
n{x,} 匹配包含至少 X 個(gè) n 的序列的字符串
n$ 匹配任何結(jié)尾為 n 的字符串
^n 匹配任何開(kāi)頭為 n 的字符串
?=n 匹配任何其后緊接指定字符串 n 的字符串
?!n 匹配任何其后沒(méi)有緊接指定字符串 n 的字符串
參考資料

W3school
菜鳥(niǎo)教程
JavaScript權(quán)威指南(第6版)

  • a-z ?

  • abcd ?

  • 0-9 ?

  • 文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

    轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/93460.html

    相關(guān)文章

    • 正則達(dá)式JavaScript版本回顧筆記背誦版本

      摘要:以指定模式分割字符串,返回結(jié)果為數(shù)組。為什么牢記,有什么用看代碼查找連續(xù)的相同的數(shù)字或者內(nèi)容是用子表達(dá)式只有字表達(dá)是中匹配的內(nèi)容才保存到緩存,這種行為叫捕獲。 前言 正則表達(dá)式之所以強(qiáng)大,是因?yàn)槠淠軐?shí)現(xiàn)模糊匹配,精確匹配沒(méi)有任何價(jià)值。 正則表達(dá)式學(xué)習(xí)筆記 第一章 JavaScript原型對(duì)象與原型鏈 1.1 正則表達(dá)式概念 RegExp:是正則表達(dá)式(regular expressio...

      CoXie 評(píng)論0 收藏0
    • 正則達(dá)式基礎(chǔ)筆記

      摘要:參考資料慕課網(wǎng)鬼斧神工之正則表達(dá)式正則表達(dá)式后向引用詳解正則表達(dá)式分鐘入門教程什么是正則表達(dá)式正則表達(dá)式是字符串的搜索和匹配的工具。貪婪模式懶惰模式后向引用分組捕獲的內(nèi)容可以在表達(dá)式或其他程序中作進(jìn)一步的處理。 參考資料 慕課網(wǎng)-鬼斧神工之正則表達(dá)式正則表達(dá)式后向引用詳解正則表達(dá)式30分鐘入門教程 什么是正則表達(dá)式? 正則表達(dá)式是字符串的搜索和匹配的工具。 正則表達(dá)式工具 一個(gè)測(cè)試正...

      Enlightenment 評(píng)論0 收藏0
    • 正則與JS中的正則

      摘要:注意本文將正則與中的正則分開(kāi)討論。正則零寬斷言更多參考各種語(yǔ)言對(duì)于正則不同支持參考單行模式與多行模式通過(guò)設(shè)置正則表達(dá)式后的修飾符可開(kāi)啟對(duì)應(yīng)的匹配模式單行模式和多行模式。 最近這段時(shí)間幫同學(xué)處理一些文檔, 涉及到一些結(jié)構(gòu)化文檔的工作大部分都得使用正則表達(dá)式, 之前對(duì)于正則的認(rèn)識(shí)大多來(lái)源于語(yǔ)言書(shū)上那幾頁(yè)的介紹, 自己也沒(méi)有用過(guò)幾次。這里將我之前感到模糊的概念作個(gè)整理。因?yàn)閷?duì)JS了解多點(diǎn),所...

      firim 評(píng)論0 收藏0
    • JavaScript正則達(dá)式學(xué)習(xí)筆記(二) - 打怪升級(jí)

      摘要:本文接上篇,基礎(chǔ)部分相對(duì)薄弱的同學(xué)請(qǐng)移步正則表達(dá)式學(xué)習(xí)筆記一理論基礎(chǔ)。正則表達(dá)式標(biāo)志符全局匹配,即找到所有匹配的。方法返回結(jié)果的格式不一致問(wèn)題這個(gè)問(wèn)題上文正則表達(dá)式學(xué)習(xí)筆記一理論基礎(chǔ)也有體現(xiàn),這里再單獨(dú)拿來(lái)說(shuō)一說(shuō),以加深記憶。 showImg(https://segmentfault.com/img/remote/1460000014261596?w=600&h=338); 本文接上篇...

      Jioby 評(píng)論0 收藏0
    • JavaScript語(yǔ)言精粹 修訂版》 讀書(shū)筆記

      摘要:于是我就先把這本薄的經(jīng)典書(shū)語(yǔ)言精粹修訂版豆瓣讀書(shū)本書(shū)簡(jiǎn)介總共章,除去附錄,才頁(yè),讀完并記錄了一些筆記。讀書(shū)筆記還可以分享給別人看。編程語(yǔ)言第版定義了的標(biāo)準(zhǔn)。程序檢查時(shí)丟棄值為函數(shù)的屬性。 之前看到這篇文章,前端網(wǎng)老姚淺談:怎么學(xué)JavaScript?,說(shuō)到怎么學(xué)習(xí)JavaScript,那就是看書(shū)、分析源碼。10本書(shū)讀2遍的好處,應(yīng)該大于一本書(shū)讀20遍??磿?shū)主動(dòng)學(xué)習(xí),看視頻是被動(dòng)學(xué)習(xí)???..

      EscapedDog 評(píng)論0 收藏0

    發(fā)表評(píng)論

    0條評(píng)論

    最新活動(dòng)
    閱讀需要支付1元查看
    <