正則表達式內容梳理

#正則、(RegExp) ####正則表達式是一個描述字符模式的對象,在js中,RegExp表示正則對象。正則的功能十分強大,能夠大幅度簡化代碼。 ##正則的功能 正澤德功能能夠匹配檢索大批量數據。切使用範圍很是普遍html

  • 驗證用戶數據(登錄註冊)
  • 採集數據/爬蟲 (爬數據)
  • 符號匹配 (檢索)
  • 驗證網頁信息(匹配) ###建立正則表達式
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轉義符能夠檢索全部哦符合正則條件的值。 ###正則的配合 使用正則配合一些方法能夠達成一些很是強大的功能測試

  • match() //此方法用於匹配,正則中用來在字符串中尋找知足正則條件的參數。
  • replace ()//找到一個符合正則的內容而且用新的自定義內容進行替換
  • substring() // 此方法同於提取字符串中介於方法內提供的兩個值之間的字符
  • search() //和正則匹配時能夠找到與正則表達式相匹配的字符的索引值。
  • test() //測試 用於判斷一個字符串裏面是否有匹配正則結果的值
  • RegExp() //正則類型轉換;
  • split () //此方法將字符串從指定索引值出分割,並指定分割後的長度,
  • charAt () //該方法可指定一個索引值並根據索引值獲取字符串中相對應的值 ##正則轉義字符 正則中存在着許多字符,有些字符在解析以後(轉義)對正則的匹配的類型有很是大的幫助。 ####經常使用的轉義字符
  • \d 匹配數字
  • \w 匹配數字字母下劃線
  • \s 匹配全部空白字符
  • \D 匹配全部非數字
  • \S 匹配全部非數字字母下劃線
  • \S 匹配全部可見字符
  • . 匹配全部 ###match 匹配
var str = "1231asdasd23"
var rel = / \d+/;
console.log (str.match(rel));
//結果只找到了一個數字

字符串中雖然存在着符合正則條件的值可是隻輸出了一個,此時若是在正則後面加一個g就能夠做用於整個字符串。code

var rel = /d/g

此經過修飾符g已經拿到了全部的數字htm

var rel = /\d+/g
var str = "123 123 456"
//此時修飾符+號能夠匹配任意長度的值
輸出
console.log(str.match(rel))

雖然g修飾符能夠幫咱們找出來全部知足要求的值,可是若是咱們要在數組裏面找到一串值,就只能去匹配字符串的長度來尋找,+能夠匹配任意長度的值。 ###正則的其餘寫法 雖然有許多修飾符的存在可讓處理正則表達式更加方便,若是咱們須要自定義檢索範圍盡心配對的話,仍是須要使用自定義檢索範圍的寫法對象

  • /{n,0}/ //第一個值是出現n次,第二個值是這個值的閾值
  • /{n}/ //只寫一個值說明出現的最小次數等於最大次數。 ###replace轉換網頁爬去的數據
var rel = /<.+>g/

由於html標籤名長度和標籤類型並不固定因此使用.能夠匹配全部的標籤名,使用+能夠匹配全部長度的標籤。 ##貪婪模式 貪婪模式是由於在js中,正則表達式會在匹配成功的前提下會盡量的奪取匹配數據,而非貪婪模式,是在知足配對的條件下儘量少的去匹配數據。索引

var rel = /^\w+@[a-z0-9]+\.[a-z]{2,3}$/
//^上尖括號表示開始,$表示結束。將整個正則表達式圈起來就不會再發生貪婪模式的現象。

##中文匹配 正則當中漢字也是能夠進行配對的,配對的範圍是計算機中打出的第一個漢字到最後一個漢字 第一個是一最後一個是龥yu。 正則寫法是[\u2e80-\u9fff]這個表明了漢字的範圍; ##模式單元 ###原子 正則當中,咱們輸入的每個字符都是一個原子,原子是最基本的組成部分,也是最小的單位, ###改變優先級 在正則當中()被稱爲模式單元能夠改變優先級。ip

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){1,3}/));// 
//返回的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
相關文章
相關標籤/搜索