400-650-7353
您所在的位置:首頁 > IT干貨資料 > web前端 > 【Web前端基礎知識】關于前端正則表達式基本用法(下)

【Web前端基礎知識】關于前端正則表達式基本用法(下)

  • 發(fā)布: Web前端培訓
  • 來源:Web前端干貨資料
  • 2020-08-19 16:37:21
  • 閱讀()
  • 分享
  • 手機端入口

3. 量詞

量詞也稱重復。掌握{m,n}的準確含義后,只需要記住一些簡寫形式。

3.1 簡寫形式

{m,} 表示至少出現m次。

{m} 等價于{m,m},表示出現m次。

? 等價于{0,1},表示出現或者不出現。記憶方式:問號的意思表示,有嗎?

+ 等價于{1,},表示出現至少一次。記憶方式:加號是追加的意思,得先有一個,然后才考慮追加。

* 等價于{0,},表示出現任意次,有可能不出現。記憶方式:看看天上的星星,可能一顆沒有,可能零散有幾顆,可能數也數不過來。

3.2 貪婪匹配和惰性匹配

看如下的例子

  1. var regex = /\d{2,5}/g; 
  2. var string = "123 1234 12345 123456"
  3. console.log( string.match(regex) );  
  4. // => ["123", "1234", "12345", "12345"] 

其中正則/\d{2,5}/,表示數字連續(xù)出現2到5次。會匹配2位、3位、4位、5位連續(xù)數字。

但是其是貪婪的,它會盡可能多的匹配。你能給我6個,我就要5個。你能給我3個,我就3要個。反正只要在能力范圍內,越多越好。

我們知道有時貪婪不是一件好事(請看文章最后一個例子)。而惰性匹配,就是盡可能少的匹配:

  1. var regex = /\d{2,5}?/g; 
  2. var string = "123 1234 12345 123456"
  3. console.log( string.match(regex) );  
  4. // => ["12", "12", "34", "12", "34", "12", "34", "56"] 

其中/\d{2,5}?/表示,雖然2到5次都行,當2個就夠的時候,就不在往下嘗試了。

通過在量詞后面加個問號就能實現惰性匹配,因此所有惰性匹配情形如下:

  1. {m,n}?  
  2. {m,}? 
  3. ?? 
  4. +? 
  5. *? 

對惰性匹配的記憶方式是:量詞后面加個問號,問一問你知足了嗎,你很貪婪嗎?

4. 多選分支

一個模式可以實現橫向和縱向模糊匹配。而多選分支可以支持多個子模式任選其一。

具體形式如下:(p1|p2|p3),其中p1、p2和p3是子模式,用|(管道符)分隔,表示其中任何之一。

例如要匹配”good”和”nice”可以使用/good|nice/。測試如下:

  1. var regex = /good|nice/g; 
  2. var string = "good idea, nice try."
  3. console.log( string.match(regex) );  
  4. // => ["good", "nice"] 

但有個事實我們應該注意,比如我用/good|goodbye/,去匹配”goodbye”字符串時,結果是”good”:

  1. var regex = /good|goodbye/g; 
  2. var string = "goodbye"
  3. console.log( string.match(regex) );  
  4. // => ["good"] 

而把正則改成/goodbye|good/,結果是:

  1. var regex = /goodbye|good/g; 
  2. var string = "goodbye"
  3. console.log( string.match(regex) );  
  4. // => ["goodbye"] 

也就是說,分支結構也是惰性的,即當前面的匹配上了,后面的就不再嘗試了。

文章“【Web前端基礎知識】關于前端正則表達式基本用法(下) ”已幫助

>>本文地址:http://littlerockbway.com/zhuanye/2020/52598.html

THE END  

聲明:本站稿件版權均屬中公教育優(yōu)就業(yè)所有,未經許可不得擅自轉載。

1 您的年齡

2 您的學歷

3 您更想做哪個方向的工作?

獲取測試結果
  • 大前端大前端
  • 大數據大數據
  • 互聯(lián)網營銷互聯(lián)網營銷
  • JavaJava
  • Linux云計算Linux
  • Python+人工智能Python
  • 嵌入式物聯(lián)網嵌入式
  • 全域電商運營全域電商運營
  • 軟件測試軟件測試
  • 室內設計室內設計
  • 平面設計平面設計
  • 電商設計電商設計
  • 網頁設計網頁設計
  • 全鏈路UI/UE設計UI設計
  • VR/AR游戲開發(fā)VR/AR
  • 網絡安全網絡安全
  • 新媒體與短視頻運營新媒體
  • 直播帶貨直播帶貨
  • 智能機器人軟件開發(fā)智能機器人
 

快速通道fast track

近期開班時間TIME