德州點創教育JavaScript正則表達式授課大綱

2020-10-13 網絡小皮皮蝦

正則表達式有兩種創建方式:

第一種:用RegExp()構造函數來創建RegExp對象

var pattern = new RegExp("[abc]"); 匹配a、b、c中的任意一個字符

第二種:通過直接量語法創建,直接量的定義包含在一對斜槓(/)之間,這種方式更常用。

var pattern = /[abc]/; 匹配a、b、c中的任意一個字符

一、直接量字符:


字符 匹配字母和數字匹配    自身\o  NUL字符(\u0000)\t 制表符(\u0000)\n 換行符(\u0000)\v 垂直制表符(\u0000)\f 換頁符(\u0000)\r 回車符(\u0000)\xnn 由十六進位數字nn指定的拉丁字符,例如, \x0A等坐於\n\uxxxx 由十六進位數字xxxx指定的Unicode字符,例如,\u0009等價於\t\cX 控制字符^X,例如 \cJ等價於換行符\n

注意:在正則表達式中,許多標點符號都有特殊的含義,如果想到正則表達式中使用這些字符的直接量進行匹配,則必須使用前綴\

特殊含義字符: ^ $ . * + = !: | \ / ( ) [ ] { }

直接輸出格式: \^ \$ \( \) 等


二、字符類:將字符直接量單獨放方括號內就成了字符類。/[a]

1、 一個字符類可以匹配它所包含的任意字符。

/[abc]/ 和字母 "a"、"b"、"c"中的任意一個都匹配

2、 可以通過 "^" 符號來定義否定字符類

/[^abc]/ 匹配所有不包含在方括號內的字符

3、 可以使用連字符來表示範圍

/[a-z]/ 匹配拉丁字母表中的小寫字母

/[a-zA-Z0-9]/ 匹配拉丁字母中任何字母和數字

4、 由於某些字符特別有用,因此使用這些字符的轉義字符來表示它們

[XXX] 匹配中括號內的任意字符

[^XXX] 匹配不在括號內的任意字符

. 除換行符和其它Unicode行終止符之外的任意字符

\w 任何ASCII字符組成的單詞,等價於[a-zA-z0-9]

\W 任何不是ASCII字符組成的單詞,等價於[^a-zA-z0-9]

\s 匹配的是空格、制表符和其它Unicode空白符

\S 匹配的是非Unicode空白符的字符

\d 任何ASCII數字,等價於[0-9]

\D 除了ASCII數字之外的任何字符,等價於[^0-9]

[\b] 退格直接量(特例)

/^[\x{4e00}-\x{9fa5}]+$/u 區配中文 /utf-8

組合匹配

[\s\d] 任意空白符或數字

5、重複(儘可能多的匹配)

{n,m}          匹配前一項至少n次,但不能超過m次{n,} 匹配前一項n次或更多次{n} 匹配前一項n次? 匹配前一項0次或1次,也就是前一項是可選的,等價於{0,1}+ 匹配前一項1次或多次,等價於{1,}* 匹配前一項0次或多次,等價於{0,}

例子:

/\d{2,4}/ 匹配2到4個數字/\w{3}\d?/ 精確匹配三個單詞和一個可選的數字 acd1 add a011/\s+Java\s+/ 匹配前後帶有最少一個空格的字符串 "java this java is java javasript "/[^(]*/ 匹配一個或多個不是左括號的字符

注意 * 與 ? 的使用 /a*/ 實際上與字符串 "abcd"匹配,因為這個字符串中有 0 個a

6、 非貪婪的重複(儘可能少的匹配

例:當使用 aaa 做為匹配字符串時,

/a+/ 會匹配它的三個字符a/a+?/ 會匹配只能匹配一個a

特殊:當使用aaab做為匹配字符串時

/a+b/ 匹配整個字符串/a+?b/ 本來期待匹配ab,但實際上匹配了aaab,這是因為正則表達式總會尋找字符串中第一個可能匹配的位置

7、 選擇、分組和引用

7.1 分隔選擇字符 |

/ab|cd|ef/ 可以匹配字符串 ab,也可以匹配cd,也可以匹配ef/\d{3}|[a-z]{4}/ 匹配三位數字或者四個小寫字母

7.2 分隔選擇匹配優先次序:從左到右,左側優先

/a|ab/ 匹配字符串ab時,匹配上的是a

7.3 分組 ()

括號()的作用一:

把單獨的項組合成表達式

/java(script)?/ 匹配字符串java,後面可以有script,也可以沒有/(ab|cd)+|ef/ 匹配字符串ef,也可以匹配字符串ab或cd的一次或多次

括號()的作用二:

在完整的模式中,定義子模式

/[a-z]+\d+/ 匹配一個或多個字母後面跟了一個或多個數字,但是我們想要的是後面的數字,可以改為/[a-z]+(\d)+/ 這樣我們就可以從檢索到的匹配中抽取數字了 ????????????

括號()的作用三:

分組,方便數字引用。允許在同一表達式後面引用前面的子表達式,通過在\後面加一位或多位數字來實現

\1 表示引用前面第一個帶()的子表達式,\2表示引用前面第二個帶()的子表達式

/['"][^'"]*['"]/ 匹配帶單引號或雙引號的字符串,可以寫成 // "a.jpg" '#box' ".wrapper"

/(['"])[^'"]*\1/

注意:對於嵌套的子表達式,其順序是以左括號(為準

例如: /([Jj]ava([Ss]cript)?)\sis\s(fun\w*)/

其中嵌套的子表達式[Ss]cript可以用\2來表示


括號()的作用

不計入數字引用的分組

/([Jj]ava(?:[Ss]cript)?)\sis\s(fun\w*)/

在上面這個分組中,(?:[Ss]cript)?) 這個分組並不生成數字引用,所以\2 表示引用了 (fun\w*)這個分組

綜合複習:

| 選擇,匹配的是該符號左邊的子表達式或右邊的子表達式 //

(...) 組合 將幾個項組合為一個單元,這個單元可通過 * + ? ! |等符號加以修飾,而且可以記住和這個組合相匹配的字符

串以供此後的使用引用

(?:...) 只組合,但不記憶與該組相匹配的字符

\n 和第n個分組第一次匹配的字符相匹配


8、 匹配位置

^ 匹配字符串的開頭,在多行檢索中,匹配一行的開頭 /^[Jj]\w*[Ss]$/

$ 匹配字符串的結尾,在多行檢索中,匹配一行的結尾

\b 匹配一個單詞的邊界

1、就是位於\w和\W之間的位置

2、或位於字符\w和字符串的開頭或結尾之間的位置

3、注意:[\b]匹配的是退格符

str = "java is a good,but javascript is also,so java is ,so java"

/\b[jJ]ava\b/

\B 匹配非單詞邊界的位置

(?=p) 零寬正向先行斷言,要求接下來的字符都與P匹配,但不能包括匹配p的好些字符

(?=!p) 零寬負向先行斷言,要求接下來的字符不與P匹配。

例子:

/^JavaScript$/ 匹配單詞JavaScript

/\sJava\s/ 匹配前後都有空格的單詞 Java,而不是做為 JavaScript的前綴存在,但是匹配不了兩頭的Java

/\bJava\b/ 匹配前後都有空格的單詞 Java,而不是做為 JavaScript的前綴存在,能夠匹配兩頭的Java

9、修飾符


i 執行不區分大小寫的匹配

g 執行一個全局匹配,即找到所有的匹配,而不是在找到第一個後停止

m 多行匹配模式,字符串如果有多行,^和&不僅匹配整個字符串的開頭與結尾,還能匹配每行的開頭與結尾

下一章,我們講正則表達式的函數應用範例。請同學們認真學習。

相關焦點

  • 在JavaScript字符串的search()方法中,如何匹配正則表達式?
    第二節:正則表達式特點正則表達式是由字符串組成的。正則表達式只是一種搜索模式或匹配模式。對於具體的字符串,需要經過正則表達式的計算後,形成一個值來判斷是否匹配上。正則表達式可簡單,可複雜,需要根據語法定義模式。在各個程式語言中,也會推出一些與正則表達式相關的輔助操作,如替找操作等。
  • JavaScript正則表達式常用技巧
    正則表達式的掌握程度能粗略地看出程式設計師的技術底子,所以技術面試、編程競賽等 都特別喜歡考察正則表達式。本篇就帶你一起夯實一下 JavaScript 正則表達式的一些使用技巧:創建正則表達式在 JavaScript 的世界,創建正則表達式有2個方法: (1)使用一個正則表達式字面量,其由包含在斜槓之間的模式組成。
  • 使用JavaScript對正則表達式進行解析
    我的目的不是要嚇你,一旦我們了解了正則表達式那它就變得很簡單:讓人畏懼.....今天,我們將揭開正則表達式的神秘面紗,看到它的含義,它的用途以及如何設計正則表達式來解決問題。1、什麼是正則表達式?正則表達式是描述數據字符串中模式的一種方式。
  • JavaScript的正則表達式對象RegExp詳解
    今天和大家學習一下JavaScript的正則表達式對象RegExp。一、正則表達式:主要是用來定義字符串的組成規則。(1)創建正則表達式對象:var reg = new RegExp("正則表達式");或者 var reg = /正則表達式/;兩種方式都可以;例如:var reg = new RegExp("\\w{6,12}"); 或者 var reg = /\w{6,12}/;我們一般會給正則表達式加上開頭或結尾的符號var
  • JavaScript高級什麼是正則以及正則表達式的簡單運用
    在實際開發中 ,經常會用到一些表單的驗證 ,提交表單的時候一般都會預校驗 ,比如手機號填寫是否合格 ,用戶暱稱填寫是否規範等 ,這些就要用到正則表達式什麼是正則表達式?用於匹配規律規則的表達式,正則表達式最初是科學家對人類神經系統的工作原理的早期研究,現在在程式語言中有廣泛的應用。正則表通常被用來檢索、替換那些符合某個模式(規則)的文本。
  • Web 開發:10句話看懂 JavaScript 正則表達式
    1,正則表達式會去查找字符串中符合某個模式的部分,在 JavaScript 中,正則表達式的創建方法是放在一對"/"之間,或者用newRegExp(),隨後再調用 match,test 或者 replace 方法。
  • javascript自學記錄:RegExp正則表達式
    對於正則表達式,個人還是更喜歡在python中的應用方式。5.4 RegExp類型整體應用:// 待查字符串var testStr = "On the morning of June 18";// 正則表達式 格式:/表達式/標誌var pat = /on/gi; // 第一種定義方式var pat = new RegExp("on","gi");
  • JavaScript正則表達式元字符介紹
    正則表達式正則表達式是一個描述字符模式的對象,用於字符匹配創建正則表達式使用 new 運算符var reg = new RegExp('Box');// 要傳一個參數,該參數是模式字符串// 第二個參數可選,模式修飾符,i 忽略大小寫;g
  • 新的JavaScript功能將改變編寫正則表達式的方式
    大多數程式語言都支持正則表達式,使用正則表達式最好的理由:它們是用於處理文本的極其強大的工具,需要幾十行代碼的文本處理任務通常可以通過一行正則表達式代碼來完成。雖然大多數語言中的內置函數通常足以對字符串執行搜索和替換操作,但更複雜的操作(例如驗證文本輸入)通常需要使用正則表達式。
  • 正則表達式A - 方法及特殊字符用法
    課程大綱 1.正則表達式的概念及作用 2.正則表達式的創建方法 3.正則表達式的用法 正則表達式概念: 正則表達式是由普通字符及特殊字符組成的對字符串進行過濾的邏輯公式 正則表達式的創建方式: 1.字面量方式創建 (隱式創建): var reg = /正則表達式/gi;
  • Python正則表達式簡介
    為此,我們可以使用正則表達式(Regular Expression,Regex)。在本文中,我將向你展示它的概念和應用,以解決數據科學中的問題,特別是使用Python對文本進行預處理。大綱我將本文分為兩個部分:正則表達式的概念正則表達式的應用正則表達式的概念正則表達式,或者我們稱之為Regex或RE,是一種特殊類型的字符串,可用於匹配字符串中的術語或單詞。
  • 正則表達式在VBA中間是如何應用?正則表達式的實現方式?
    Hi,大家好,本章節開始將會從零開始和大家用圖文的方式,讓你從零基礎學會正則表達式!有興趣的小夥伴可以持續關注我,或者在專欄中進行查看自我學習,願與君攜手前行!在上一個章節說到正則表達式的入門級知識點,本節將會與大家分享一下正則表達式的是具體實現方式是怎麼樣的?
  • JavaScript-正則表達式中的修飾符和對象有哪些?
    本節主要內容:1.什麼是正則表達式2.正則表達式進階3.正則表達式高級學習目標:一、正則表達式正則表達式概念:正則表達式(英文為regular Expression)是一種【字符串檢索模式】正則表達式具體表現為一個字符串的樣子。
  • JavaScript常用正則表達式備忘錄
    正則表達式或「regex」用於匹配字符串的各個部分 下面是我創建正則表達式的備忘單。匹配正則惰性匹配字符串中與給定要求匹配的最小部分默認情況下,正則表達式是貪婪的
  • 正則表達式 – 簡介
    通過理解 * 通配符的工作原理,引入了正則表達式所依賴的概念,但正則表達式功能更強大,而且更加靈活。正則表達式的使用,可以通過簡單的辦法來實現強大的功能。下面先給出一個簡單的示例:^.+@.+\\..+$繼續閱讀本教程將讓您也可以自由應用這樣的代碼。為什麼使用正則表達式?
  • 正則修煉手冊:從零開始學正則表達式
    從零開始學正則表達式正則表達式,又稱規則表達式。正則表達式旨在批量解決對應問題,使程序發揮其工作效率。給定一個正則表達式和另一個字符串,我們可以達到如下的目的:1. 給定的字符串是否符合正則表達式的過濾邏輯(稱作「匹配」)。2. 可以通過正則表達式,從字符串中獲取我們想要的特定部分。
  • JavaScript正則表達式「程式設計師培養之路第十二天」
    第一節 基本概念正則表達式(regular expression)描述了一種字符串匹配的模式,他是一個特殊的公式,由原子、元字符、模式修正符組成;它也是一個字符串!只不過是一個特殊的字符串主要實現對字符串的匹配、分割、查找、替換等操作 正則表達式的主要作用: 正則匹配: 可以測試字符串內容是否可以與正則相匹配 替換文本: 根據模式匹配字符串中的特定內容,進行替換、刪除 提取數據: 根據模式匹配從字符串中提取內容
  • Python基礎學習筆記(十)正則表達式(上)
    本節知識大綱:本節知識大綱>一、正則表達式介紹正則表達式是什麼?如果我們對字符串有要求,我們就可以通過正則表達式把它表示出來,我們可以用正則表達式去匹配符合規則的字符串;正則表達式的處理對象是字符串,主要應用正則表達式的操作有:驗證查找替換1.
  • 第24節 RegExp正則表達式-Web前端開發之Javascript-零點程式設計師
    正則表達式(regular expression),是一個描述字符模式的對象,其以一種簡單的方式描述或匹配一系列符合某個語法規則的字符串;ES使用RegExp類型來表示正則,其在String和RegExp類型都定了相關的正則方法,後者的功能更加強大;語法:直接量:
  • 正則表達式中的 .*? 或 .*+ 的意思
    正則表達式簡介正則表達式,又稱規則表達式。(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE),計算機科學的一個概念。正則表達式通常被用來檢索、替換那些符合某個模式(規則)的文本。許多程序設計語言都支持利用正則表達式進行字符串操作。例如,在Perl中就內建了一個功能強大的正則表達式引擎。