成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

29.22分鐘學(xué)會(huì)書寫正則(2)

Blackjun / 2980人閱讀

摘要:寫在前面的一些廢話沒有看過(guò)上一篇文章的盆友有福了今天沒錯(cuò)就是現(xiàn)在我將免費(fèi)免費(fèi)將上篇文章的鏈接發(fā)出來(lái)這里是上篇上回說(shuō)了怎么寫出正則,這次展示下在中使用正則的場(chǎng)景正則對(duì)象屬性的正則對(duì)象有以下幾個(gè)屬性,其中前面三個(gè)也叫修飾符也就是表達(dá)式兩條杠后面

寫在前面的一些廢話

沒有看過(guò)上一篇文章的盆友有福了!

今天!沒錯(cuò)!就是現(xiàn)在!我將免費(fèi)!all f*cking FREE!

免費(fèi)將上篇文章的鏈接發(fā)出來(lái)!

這里是上篇

上回說(shuō)了怎么寫出正則,這次展示下在js中使用正則的場(chǎng)景

正則對(duì)象屬性

javascript的正則對(duì)象有以下幾個(gè)屬性,其中前面三個(gè)也叫修飾符(也就是/表達(dá)式/兩條杠后面的字符,比如上一篇文章出現(xiàn)的 /is/g 的這個(gè)g)。

global:是否全文搜索,默認(rèn)false

ignoreCase:是否大小寫敏感,默認(rèn)false,即不忽略大小寫

multiline:是否多行搜索,默認(rèn)false

lastIndex:當(dāng)前表達(dá)式匹配內(nèi)容的最后一個(gè)字符的下一個(gè)位置

source:正則表達(dá)式的文本字符串,也就是“/表達(dá)式/修飾符”中的表達(dá)式,var reg=/is/g; reg.source就是is

正則相關(guān)的方法

js中,RegExp對(duì)象有兩個(gè)內(nèi)置方法

test

exec

此外,還有一些String對(duì)象的方法也支持正則表達(dá)式,它們是

search

match

split

replace

test()

test() 方法用于檢測(cè)一個(gè)字符串是否匹配某個(gè)模式,返回true或者false.

var reg = /w/;
reg.test("abc");
//true
reg.test("abc");
//true
reg.test("abc");
//true
reg.test("@#$%")
//false
reg.test("@#$%")
//false
//為什么要多執(zhí)行幾遍呢?你可能會(huì)以為樓主lu多了導(dǎo)致老眼昏花多輸入了幾遍。but NO!多執(zhí)行幾遍是為了和下面作對(duì)比。

當(dāng)我們的正則表達(dá)式加上了g修飾符以后,這個(gè)方法出現(xiàn)了一些不同

var reg = /w/g;
reg.test("abc");//true
reg.test("abc");//true
reg.test("abc");//true
reg.test("abc");//false


為什么會(huì)這樣呢?因?yàn)楫?dāng)我們加上全局搜索這個(gè)修飾符后,test()方法會(huì)返回結(jié)果,并且更新reg對(duì)象的屬性(lastIndex),他會(huì)在上一次lastIndex的位置開始往后查找,而不是從頭開始。
所以這個(gè)方法建議不要加g,如果你這個(gè)人比較倔強(qiáng),非要加的話,你可以每次都重新初始化一個(gè)正則對(duì)象,因?yàn)樗谝淮蔚慕Y(jié)果是和沒有加g的時(shí)候是一樣的。
Like this。

var reg = /w/g;reg.test("abc");//true
//每次都初始化正則對(duì)象,把這兩行寫在一行里比較好復(fù)制,因?yàn)榉珠_復(fù)制一不小心就出現(xiàn)了上面的問(wèn)題
exec()

exec()方法用于使用正則表達(dá)式對(duì)字符串執(zhí)行搜索,并將更新全局RegExp對(duì)象的屬性以反應(yīng)匹配結(jié)果
如果沒有匹配到文本則返回null,否則返回一個(gè)結(jié)果數(shù)組:

數(shù)組第一個(gè)元素是與正則表達(dá)式相匹配的文本

第二個(gè)元素是與正則表達(dá)式的第一個(gè)子表達(dá)式(也就是分組1)相匹配的文本(如果有分組1的話)

第三個(gè)元素是與正則表達(dá)式的第二個(gè)子表達(dá)式(分組2)相匹配的文本(如果有分組2的話)

除了數(shù)組元素和 length 屬性之外,exec() 方法還返回兩個(gè)屬性。index 屬性聲明的是匹配文本的第一個(gè)字符的位置。input 屬性則存放的是被檢索的字符串 string。

var reg = /(d)(w)/  //上篇文章已經(jīng)介紹過(guò)分組了,這里的兩個(gè)括號(hào)分別是分組1和分組2
reg.exec("1a2b3c4d5e");

當(dāng)我們的正則表達(dá)式加上了g修飾符以后,這個(gè)方法又出現(xiàn)了一些不同

var reg = /(d)(w)/g
reg.exec("1a2b3c4d5e");

還是上圖片比較簡(jiǎn)單~

這個(gè)表現(xiàn)跟test是一個(gè)尿性的,即非全局調(diào)用(不加g)的時(shí)候不會(huì)更新lastIndex(lastIndex不生效),全局調(diào)用的時(shí)候會(huì)更新lastIndex

說(shuō)完了比較復(fù)雜的有分組的情況,我們來(lái)看看沒有分組的情況,言簡(jiǎn)意賅,你作為這么優(yōu)秀的一個(gè)人,應(yīng)該能隨便看懂吧。

var reg = /dw/  
reg.exec("1a2b3c4d5e");

對(duì)于這個(gè)方法呢,如果我們只需要查找第一個(gè)匹配結(jié)果的話可以不加g,如果需要返回所有匹配結(jié)果的話,需要循環(huán)執(zhí)行reg.exec(),并且需要加上g。

search()

search()方法用于檢索字符串中制定的子字符串或者檢索與正則表達(dá)式相匹配的子字符串。

方法返回第一個(gè)匹配結(jié)果的index,查找不到返回-1
search()方法會(huì)忽略g標(biāo)志,總是從字符串的開頭進(jìn)行檢索

當(dāng)我們傳入的參數(shù)s字符串時(shí),它會(huì)轉(zhuǎn)換成正則表達(dá)式
var str = "abcd1234"
str.search("1") //4
str.search(/1/) //4
str.search("hello") //-1
str.search(/hello/) //-1

so easy~下一個(gè)

match()

非全局調(diào)用情況下(不加g):
這個(gè)方法類似于exec(),返回值是一毛一樣的,one hair one style。
match()方法可在字符串內(nèi)檢索指定的值,或找到一個(gè)或多個(gè)正則表達(dá)式的匹配
如果沒有匹配到文本則返回null,否則返回一個(gè)結(jié)果數(shù)組:

數(shù)組第一個(gè)元素是與正則表達(dá)式相匹配的文本

第二個(gè)元素是與正則表達(dá)式的第一個(gè)子表達(dá)式(也就是分組1)相匹配的文本(如果有分組1的話)

第三個(gè)元素是與正則表達(dá)式的第二個(gè)子表達(dá)式(分組2)相匹配的文本(如果有分組2的話)

除了數(shù)組元素和 length 屬性之外,match() 方法還返回兩個(gè)屬性。index 屬性聲明的是匹配文本的第一個(gè)字符的位置。input 屬性則存放的是被檢索的字符串 string。

var str = "1a2b3c4d";
var reg = /(d)(w)/;
str.match(reg);

當(dāng)我們的正則表達(dá)式加上了g修飾符以后,這個(gè)方法又出現(xiàn)了一些不同,我為什么要說(shuō)‘又’

match()方法的返回改變了,變化害...害挺大的,跟前面的exec()和test()方法又有不同

如果沒有匹配到文本則返回null,否則返回一個(gè)結(jié)果數(shù)組:

數(shù)組元素為與正則表達(dá)式匹配的文本

var str = "1a2b3c4d";
var reg = /(d)(w)/g;
str.match(reg);

你有沒有發(fā)現(xiàn),即使我已經(jīng)貼了圖,卻還是寫了代碼,為什么?
因?yàn)樽鳛橐粋€(gè)這么sweet 和 warm的人,我有必要為你節(jié)省你自己輸入代碼的時(shí)間,你現(xiàn)在只需要ctrl C 然后ctrl V就可以在瀏覽器控制瘋狂驗(yàn)證我的圖片,瘋狂測(cè)試這些方法!

split()

split()方法用于把一個(gè)字符串分割成字符串?dāng)?shù)組。

//這個(gè)也可以輸入字符串作為參數(shù),類似于search(),它會(huì)轉(zhuǎn)換成正則
var str = "a,b,c,d"
str.split(","); //["a","b","c","d"]
str.split(/,/); //["a","b","c","d"]
//一般情況都是使用字符串居多,比較復(fù)雜的情況就可以使用正則
var str ="a1b2c3";
str.split(/d/); //["a", "b", "c", ""]
//注意:如果字符串最后的子字符串剛好符合參數(shù)的正則,那么就會(huì)多了一個(gè)空的元素,像上面一樣
replace()

來(lái)了來(lái)了,上篇文章中使用最多的replace()終于來(lái)了?。?!AV8D shout with me! RRRRRRRRrrrrrrrrrrrrrr~EEEEEEE~PPPPP~LLLL~AAAA~CCCCC~EEEEE。

該方法用于在字符串中用一些字符替換另一些字符,或替換一個(gè)與正則表達(dá)式匹配的子串。

1、 一般用法,這里是一般用法啊,replace("找誰(shuí)","替換成誰(shuí)")

該用法的全局與非全局調(diào)用的差別是‘替換第一個(gè)匹配項(xiàng)’和‘替換所有匹配項(xiàng)’。

舉個(gè)常用的例子

//這個(gè)‘找誰(shuí)’同樣也可以是字符串或者是正則,類似于split(),search()
var str = "hello I am leelei";
str.replace("leelei","嶺南吳彥祖"); //"hello I am 嶺南吳彥祖"
str.replace(/leelei/,"嶺南吳彥祖"); //"hello I am 嶺南吳彥祖"

好吧,這個(gè)對(duì)于你們來(lái)說(shuō)并不常用,可能是只有我在用而已,抱歉。寫個(gè)你們常用的例子吧

var str = "2018-11-26";
str.replace(/-/,"/");  //"2018/11-26"
//看到?jīng)]有,這里只替換了一個(gè)-
str.replace(/-/g,"/");  //"2018/11/26"
//只有全局調(diào)用的時(shí)候,才會(huì)替換所有的匹配文本

2、 進(jìn)階用法,replace("找誰(shuí)",回調(diào)函數(shù)),每次匹配替換的時(shí)候調(diào)用,有4個(gè)參數(shù)

1、匹配的字符串

2、正則表達(dá)式分組內(nèi)容,沒有分組就沒有這個(gè)這個(gè)參數(shù),幾個(gè)分組就幾個(gè)該參數(shù)

3、匹配項(xiàng)在字符串中的index

4、原字符串,replace()方法不會(huì)改變?cè)址呐丁?/p>

//**當(dāng)沒有分組的時(shí)候**
var str ="a5b6c7d8";
//可以根據(jù)下面的截圖對(duì)照上面的參數(shù)來(lái)理解記憶。
//這里是給每一個(gè)匹配的數(shù)字+1.
str.replace(/d/g,function(match,index,origin){
    console.log(match,index,origin);
    return match-0+1;
});

//**當(dāng)有分組的時(shí)候**
//為字符串中的某些字段更換樣式,完整的demo就不寫了,大家應(yīng)該都能看懂吧。
//將第一個(gè)分組匹配的內(nèi)容替換掉
//為什么要分組? 因?yàn)槲覀儾幌虢o"個(gè)"這個(gè)字添加樣式,但是又需要用"個(gè)"來(lái)判斷,我們只更改"個(gè)"前面的數(shù)字的樣式,不更改其他數(shù)字。
var str = "第1點(diǎn),這里有4個(gè)橘子,5個(gè)橙子,9個(gè)蘋果,我們需要為這幾個(gè)數(shù)量更改樣式.";
str.replace(/(d)個(gè)/g,function(match,$1,index,origin){
    console.log(match,$1);
    return ""+$1+"個(gè)";
})
//需要注意的是,這個(gè)回調(diào)函數(shù)的return值會(huì)覆蓋match的值,因此要在return的時(shí)候加回"個(gè)"字。


ok~應(yīng)該足夠清楚了吧~

最后

雖然標(biāo)題是29.22分鐘,但是看完兩篇文章好像就不止了。
我不管,30分鐘內(nèi)沒看完的好好檢討下自己,是不是沒有戴眼鏡,是不是沒睡好覺,看那么慢呢!

如果有建議或者意見,請(qǐng)?jiān)谠u(píng)論區(qū)指出,非常感謝~

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

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

相關(guān)文章

  • 29.22分鐘學(xué)會(huì)書寫正則

    摘要:而在下,僅僅是喜歡這個(gè)數(shù)字,如是而已正則表達(dá)式正則表達(dá)式,又稱規(guī)則表達(dá)式。對(duì)象在爪洼死苦瑞特中,對(duì)象表示正則表達(dá)式,它是對(duì)字符串執(zhí)行模式匹配的強(qiáng)大工具。序列匹配,而則匹配。否則,將視為一個(gè)原義的字符。注意正則表達(dá)式會(huì)匹配全角空格符。 寫在最前面 看到標(biāo)題你可能會(huì)疑惑為什么不是30分鐘?因?yàn)槲疫@個(gè)文章圖文并茂,非??植?,兄弟,其實(shí)你不用30分鐘就可以看懂。你可能會(huì)以為我在吹牛B,但是當(dāng)你...

    qujian 評(píng)論0 收藏0
  • 60分鐘正則從入門到深入

    摘要:正則表達(dá)式使用單個(gè)字符串來(lái)描述匹配一系列匹配某個(gè)句法規(guī)則的字符串。接下來(lái),是在手機(jī)正則里面已經(jīng)出現(xiàn)了。序列匹配而則匹配。分組與反向引用分組,又稱為子表達(dá)式。把正則表達(dá)式拆分成小表達(dá)式。 本文轉(zhuǎn)載自網(wǎng)絡(luò)。轉(zhuǎn)載編輯過(guò)程中,可能有遺漏或錯(cuò)誤,請(qǐng)以原文為準(zhǔn)。原文作者:水墨寒湘原文鏈接:https://juejin.im/post/582dfc... 正則表達(dá)式對(duì)于我來(lái)說(shuō)一直像黑暗魔法一樣的存...

    _ang 評(píng)論0 收藏0
  • 【接口測(cè)試—postman】5分鐘讓你學(xué)會(huì)接口測(cè)試工具——postman的基礎(chǔ)常用技巧,看完少走一周

    摘要:今天來(lái)和大家分享下,我這段時(shí)間做接口測(cè)試的一些心得。接口測(cè)試就我目前的理解,大部分情況下,接口測(cè)試,就是按照接口測(cè)試文檔,輸入相應(yīng)的請(qǐng)求,看能否得到文檔上所寫的接口返回消息。這一過(guò)程,稱之為接口測(cè)試,如果沒有返回相應(yīng)的信息,說(shuō)明有了。 大家好,我是好學(xué)的小師弟。今天來(lái)和大家分享下,我這段時(shí)間...

    The question 評(píng)論0 收藏0
  • 前端周刊第59期:選 Flow 還是 TypeScript?

    摘要:周末是時(shí)隔兩月的家人團(tuán)聚,而每次內(nèi)容的準(zhǔn)備平均需要我集中精力工作小時(shí),所以第期的內(nèi)容今早才準(zhǔn)備好,對(duì)不住大家了。下面是本周精選內(nèi)容,請(qǐng)享用。本文作者王仕軍,商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。 showImg(https://segmentfault.com/img/remote/1460000009742537?w=1240&h=509); 周末是時(shí)隔兩月的家人團(tuán)聚,而...

    Julylovin 評(píng)論0 收藏0
  • 分鐘教你學(xué)會(huì)配置eslint,還在為風(fēng)格單雙引號(hào),對(duì)象末位逗號(hào)要不要,引用各種報(bào)錯(cuò)而煩惱?(建議收

    摘要:最全的配置大全,我已經(jīng)加了詳細(xì)中文注釋,只需要找到自己想要的配置就可以了,強(qiáng)烈建議收藏用法非常簡(jiǎn)單,找到下的添加對(duì)象即可比如我要把規(guī)則原本單引號(hào)要變?yōu)殡p引號(hào),那加上注意這個(gè)規(guī)則如果違反了規(guī)則情況下,這里的數(shù)字表示不不處理,表示警告,表示錯(cuò)誤 最全的eslint配置大全,我已經(jīng)加了詳細(xì)中文注釋,只需要找到自己想要的配置就可以了,強(qiáng)烈建議收藏! 用法非常簡(jiǎn)單,找到.eslintrc.js下...

    劉東 評(píng)論0 收藏0

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

0條評(píng)論

閱讀需要支付1元查看
<