摘要:由于正則表達式采用了括號分組,所以在返回匹配結果的同時,依次返回該結果的所有分組兩個分組,無輸出全局匹配分組時,和返回結果不同。
原文鏈接
從今天開始關于webpack的討論就告一段落了,如果遇到webpack有重大更新,我會隨時更新,請對我保持持續關注。
每次遇到與表單驗證和校驗的相關問題都會很難避免的卡住,是時候攻克一下這個問題
從今天開始進入對javascript正則表達式的學習
為了本地調試方便我們先安裝本地服務器
npm install http-server -g
然后新建一個html文件
啟動服務
http-server必備知識點 創建正則表達式
javascript正則表達是的創建有兩種方式
最常見的 就這這種,首尾用兩個斜線/分隔符,例如
var reg = /d/
實例化
var reg=new RegExp("d");//和上面等價 var reg=new RegExp(/d/);//等價
new RegExp("d"),使用字符串創建,一個反斜線用來轉義d==>d,一個反斜線用來轉義另一個反斜線即==>
當然最常用的還是用兩個反斜線創建正則表達式
javascript的正則表達式是RegExp,
RegExp是javascript的內置構造函數,即存在protoytpe,可以翻看之前的js原型系列文章查看,我看看下RegExp的原型對象
console.log(RegExp.prototype)
輸出
我們重點看test()和exec()這個方法
RegExp.prototype.test(String)是RegExp原型對象上的內置方法,我們可以直接使用,它返回一個布爾類型的值,是否在參數String中找到匹配項
并不是要求整個sring都由表達式匹配,如果要檢測整個string有表達式匹配需要在表達式兩端添加^和$,
感受一下的
console.log(/w/.test(1)); //=>true console.log(/d/.test("1")); //=>true console.log(/d/.test("q1")); //=>true console.log(/^d$/.test("q1"));//=>fase
test()中的參數為string類型,如果不是string類型,會被轉正string類型
console.log(/w/.test(1));//=>true console.log(/w/.test("1"));//=>true正則表達式內置方法exec()
提到exec(),就不得不提match(),他們很相似
match是字符串方法,寫法為:str.match(reg)
exec是正則表達式方法,寫法為:reg.exec(str)
match和exec在匹配成功時返回的都是數組,在沒有匹配上時返回的都是null
var s = "aaa bbb ccc"; var reg = /w+/; var rs_match = s.match(reg); var rs_exec = reg.exec(s); console.log("match:", rs_match); console.log("exec:", rs_exec);
看輸出:是相同的
當不使用全局匹配時,兩者的匹配效果是一樣的,僅返回第一次匹配成功的結果
繼續看代碼
var s = "aaa bbb ccc"; var reg = /w+/g; var rs_match = s.match(reg); var rs_exec = reg.exec(s); console.log("match:", rs_match); console.log("exec:", rs_exec);
看輸出:是不同的
繼續
var s = "aaa bbb ccc"; var reg = /w+/g; //有g var rs_match1 = s.match(reg); var rs_match2 = s.match(reg); var rs_exec1 = reg.exec(s); var rs_exec2 = reg.exec(s); var rs_exec3 = reg.exec(s); var rs_exec4 = reg.exec(s); console.log("match1:", rs_match1); console.log("match2:", rs_match1); console.log("exec1:", rs_exec1); console.log("exec2:", rs_exec2); console.log("exec3:", rs_exec3); console.log("exec4:", rs_exec4);
看輸出
當使用全局匹配時,兩者的匹配結果出現區別
全局匹配時,match會返回所有匹配上的內容;而exec僅匹配單次匹配上的內容
全局匹配且進行多次匹配時,exec會從上次匹配結束的下一位開始匹配,返回本次匹配上的內容,直至無可以匹配的內容,返回null
分組
無全局匹配分組時,match和exec返回結果相同。由于正則表達式采用了括號分組,所以在返回匹配結果的同時,依次返回該結果的所有分組:
var s = "aaa1 bbb2 ccc3"; var reg = /(w+)(d{1})/;//兩個分組,無g var rs_match1 = s.match(reg); var rs_match2 = s.match(reg); var rs_exec1 = reg.exec(s); var rs_exec2 = reg.exec(s); console.log("match1:",rs_match1); console.log("match2:",rs_match1); console.log("exec1:",rs_exec1); console.log("exec2:",rs_exec2);
輸出
全局匹配分組時,match和exec返回結果不同。match會返回所有匹配到的結果;而exec會返回本次匹配到的結果,若表達式中出現分組,則會依次返回本次匹配的全部分組:
var s = "aaa1 bbb2 ccc3"; var reg = /(w+)(d{1})/g; var rs_match1 = s.match(reg); var rs_match2 = s.match(reg); var rs_exec1 = reg.exec(s); var rs_exec2 = reg.exec(s); var rs_exec3 = reg.exec(s); var rs_exec4 = reg.exec(s); console.log("match1:",rs_match1); console.log("match2:",rs_match1); console.log("exec1:",rs_exec1); console.log("exec2:",rs_exec2); console.log("exec3:",rs_exec3); console.log("exec4:",rs_exec4);基本概念 普通字符
普通字符是正則表達式的基礎,字符組,就是一組字符,標示在同一個位置可能出現的各種字符,寫法是在[和]之間列出所有可能出現的字符,像[ab]、[1234]、[!@#%]都是字符組
console.log(/moshanghan/.test("moshanghan"));//=>true console.log(/[abc]/.test("a"));//=>true console.log(/[abc]/.test("b"));//=>true console.log(/[0-9]/.test(0));//=>true元字符
元字符是相對于普通字符來說的,
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/99428.html
摘要:嵌套分組的捕獲如果碰到類似我就是陌上寒的嵌套分組,捕獲的順序是什么來試試我就是陌上寒我就是陌上寒我就是陌上寒我是陌上寒陌上寒規則是以左括號出現的順序進行捕獲。 showImg(https://segmentfault.com/img/remote/1460000017169189?w=4260&h=2879); 原文鏈接 昨天說了幾個RegExp的幾個實例屬性 global 標示正則...
摘要:關于,新手理解起來可能比較困難,尤其是一些很牛逼的預查正則表達式。非貪婪與貪婪的問題貪婪出現在這種不確定數量的匹配中,所謂的貪婪,表示正則表達式在匹配的時候,盡可能多的匹配符合條件的內容。 學習了半年的正則表達式,也不能說一直學習吧,就是和它一直在打交道,如何用正則表達式解決自己的問題,并且還要考慮如何在匹配大量的文本時去優化它。慢慢的覺得正則已經成為自己的一項技能,逐漸的從一個正則表...
摘要:關于,新手理解起來可能比較困難,尤其是一些很牛逼的預查正則表達式。非貪婪與貪婪的問題貪婪出現在這種不確定數量的匹配中,所謂的貪婪,表示正則表達式在匹配的時候,盡可能多的匹配符合條件的內容。 學習了半年的正則表達式,也不能說一直學習吧,就是和它一直在打交道,如何用正則表達式解決自己的問題,并且還要考慮如何在匹配大量的文本時去優化它。慢慢的覺得正則已經成為自己的一項技能,逐漸的從一個正則表...
摘要:正則表達式使用單個字符串來描述匹配一系列匹配某個句法規則的字符串。接下來,是在手機正則里面已經出現了。序列匹配而則匹配。分組與反向引用分組,又稱為子表達式。把正則表達式拆分成小表達式。 本文轉載自網絡。轉載編輯過程中,可能有遺漏或錯誤,請以原文為準。原文作者:水墨寒湘原文鏈接:https://juejin.im/post/582dfc... 正則表達式對于我來說一直像黑暗魔法一樣的存...
閱讀 3469·2021-09-02 09:53
閱讀 1793·2021-08-26 14:13
閱讀 2750·2019-08-30 15:44
閱讀 1313·2019-08-30 14:03
閱讀 1962·2019-08-26 13:42
閱讀 3014·2019-08-26 12:21
閱讀 1302·2019-08-26 11:54
閱讀 1899·2019-08-26 10:46