正規表示式是乙個描述字元模式的物件,在js中,regexp表示正則物件。正則的功能十分強大,可以大幅度簡化**。正澤德功能可以匹配檢索大批量資料。切使用範圍非常廣泛
script
var rel = /abc/ //建立乙個正規表示式給變數
var rel2 = new regexp(/abc/)構建函式創造正則
//構建函式的第二種寫法
var rel2-1 = new regexp(」abc「)
//等同於直接寫入正則
var rel3 = regexp(」hell 「)//將乙個字串轉化為正則
轉換函式
script
正規表示式的三種寫法沒有固定要求,但是如果你眼睛不瞎坑定選擇第一種。demo:
var str = "a1bcd"
var rel = /\d/g //\d為匹配數字
console.log(rel.test(str)) ture
//測試字串裡是否存在滿足正則的內容,有為ture 沒有為false
以上**中,用來測試結果,一種非常常見的寫法。
demo:
var a = "abcgfjkl00";
var rle = /b/ //檢索b
console.log(a.search(rle))
//檢索滿足正則條件的值在字串中的索引值
以上**用了search方法,用域檢索索引值。
demo:
var str = "123 456 789 789 asd asd ";
var rel = /123/
console.log(str.match(re));匹配 match
//輸出的是123 ,因為只匹配了一次想要全部匹配需要在正則後面加g
var rel2 = /123/g //全部配
以上demo呼叫的match方法,match中文意思是匹配配對,用次方法配合正則的g轉義符可以檢索所有哦符合正則條件的值。
使用正則配合一些方法可以達成一些非常強大的功能
正則中存在著許多字元,有些字元在解析之後**義)對正則的匹配的型別有非常大的幫助。
常用的轉義字元
var str = "1231asdasd23"
var rel = / \d+/;
console.log (str.match(rel));
//結果只找到了乙個數字
字串中雖然存在著符合正則條件的值但是只輸出了乙個,此時如果在正則後面加乙個g就可以作用於整個字串。
var rel = /d/g
此通過修飾符g已經拿到了所有的數字
var rel = /\d+/g
var str = "123 123 456"
//此時修飾符+號可以匹配任意長度的值
輸出console.log(str.match(rel))
雖然g修飾符可以幫我們找出來所有滿足要求的值,但是如果我們要在陣列裡面找到一串值,就只能去匹配字串的長度來尋找,+可以匹配任意長度的值。
雖然有許多修飾符的存在可以讓處理正規表示式更加方便,如果我們需要自定義檢索範圍盡心配對的話,還是需要使用自定義檢索範圍的寫法
var rel = /<.+>g/
因為html標籤名長度和標籤型別並不固定所以使用.可以匹配所有的標籤名,使用+可以匹配所有長度的標籤。
貪婪模式是因為在js中,正規表示式會在匹配成功的前提下會盡可能的奪取匹配資料,而非貪婪模式,是在滿足配對的條件下盡可能少的去匹配資料。
var rel = /^\w+@[a-z0-9]+\.[a-z]$/
//^上尖括號表示開始,$表示結束。將整個正規表示式圈起來就不會再發生貪婪模式的現象。
正則當中漢字也是可以進行配對的,配對的範圍是計算機中打出的第乙個漢字到最後乙個漢字
第乙個是一最後乙個是龥yu。 正則寫法是[\u2e80-\u9fff]這個代表了漢字的範圍;
正則當中,我們輸入的每乙個字元都是乙個原子,原子是最基本的組成部分,也是最小的單位,
在正則當中()被稱為模式單元可以改變優先順序。
console.log("jack".match(/jack|rose/)); // jack
模式單元寫法:
console.log('jack'.match(/jac(k|r)ose/))
一般來講上面的**是不會匹配到內容,實際上正確的會被匹配到的內容應該是jackose或者jacrose
console.log("dds".match(/dds/))
//顯然返回的是dds
如果需要匹配多個dds就可以將多個原子視為乙個原子
demo:
console.logconsole.log("ddsddsdds".match(/(dds)/));//
//返回的shiddsddsdds
正則可以將內容村粗到內容中,並且可以通過索引值對記憶體中的資料進行訪問,
console.log('aaa'.match(/aaa/)); // aaa
// 我們如果改為下面這種寫法
console.log('aaa'.match(/(a)(a)(a)/)); // 0:aaa 1:a 2:a 3:a 內容被儲存到了記憶體之中
因為記憶體容量能省則省,所以當想把資料從記憶體中移除的話可以通過"?;"的形式來一處。
demo:
console.log('aaa'.match(/(?:a)(a)(a)/));// 0:aaa 1:a 2:a
正規表示式知識梳理
概述 正規表示式 regular expression 描述了一種字串匹配的模式 pattern 可以用來檢查乙個串是否含有某種子串 將匹配的子串替換或者從某個串中取出符合某個條件的子串等。正規表示式是由普通字元 例如字元 a 到 z 以及特殊字元 稱為 元字元 組成的文字模式。模式描述在搜尋文字時...
正規表示式知識梳理
首先先貼個 此工具是用來幫助理解正規表示式的,在你閱讀正規表示式的時候非常有用。具有特殊含義的非字母字元。包括 如果你能一下子就說出這些符號的含義,表示正規表示式的基礎已經掌握了。用來匹配一類字元裡的乙個 表示不包括這類字元。中括號中的 表示取反的意思 中括號的裡 表示範圍的意思。匹配所有字元。d ...
正規表示式知識梳理
1 概述 正規表示式 regular expression 描述了一種字串匹配的模式 pattern 可以用來檢查乙個串是否含有某種子串 將匹配的子串替換或者從某個串中取出符合某個條件的子串等。正規表示式是由普通字元 例如字元 a 到 z 以及特殊字元 稱為 元字元 組成的文字模式。模式描述在搜尋文...