javaScript正規表示式

2021-08-20 02:37:10 字數 3243 閱讀 8427

有兩種方法例項化regexp物件:

修飾符

g:global全文搜尋,不新增,搜尋到第乙個匹配停止

i:ignore case忽略大小寫,預設大小寫敏感

m:multiple lines多行搜尋

元字元正規表示式由兩種基本字元型別組成: -原義文字字元 -元字元

元字元是在正規表示式中有特殊含義的非字母字元,如下幾種符號類的: . * + ? $ ^ | \ () {}

元字元的含義不是唯一的,在不同場景下,含義會有不同

字元類我們可以使用元字元來構建乙個簡單的類

所謂的類是指符合某些特性的物件,乙個泛指,而不是特指某個字元

表示式[abc]把字元a或b或c歸為一類,表示式可以匹配這樣的字元

字元類取反

表示式[^abc] 表示不是字元a或b或c的內容

範圍類我們可以使用[a-z]來連線兩個字元表示從a到z的任意字元

預定義類

字元等價類含義

.[^\r\n]

除了回車符和換行符之外的所有字元

\d[0-9]

數字字元

\d[^0-9]

非數字字元

\s[\t\n\x0b\f\r]

空白符\s

[^\t\n\x0b\f\r]

非空白符

\w[a-za-z_0-9]

單詞字元(字母、數字、下劃線_)

\w[^a-za-z_0-9]

非單詞字元 邊界

字元含義^

以***開始

$以***結束

\b單詞邊界

\b非單詞邊界

示例:'this is boy'.replace(/\bis\b/g, 0); 結果:this 0 boy

'this is boy'.replace(/\bis\b/g, 0); 結果 th0 is boy 量詞

字元含義?

出現0次或1次(最多出現1次)

+出現一次或多次(至少出現一次)

*出現0次或多次(任意次)

出現n次

出現n至m次

至少出現n次

貪婪模式

'12345678'.replace(/\d/g,'x') ==>結果x78

貪婪模式會盡可能多的匹配,知道匹配失敗

非貪婪模式

'12345678'.replace(/\d?/g,'x') 在量詞後面加乙個? ==>結果xx78

匹配到123替換為x,又匹配到456替換為x 分組

用()可以達到分組的功能,使量詞作用於分組 或

用 | 可以達到或的效果

反向引用

'2015-12-24'.replace(/(\d)-(\d)-(\d)/g,'$2/$3/$1') ==>結果12/24/2015

$1是指第乙個分組,也就是第乙個()

忽略分組

不希望捕獲某些分組,只需在分組內加上?:就可以

$1是指第乙個分組,也就是第乙個()

前瞻正向前瞻?= , 負向前瞻?!

正則物件屬性

global:是否全文搜尋,預設false

ignore case:是否大小寫敏感,預設false

multiline:多行搜尋,預設值是false

source:正規表示式的文字字串

示例:var reg1 = /\w/; var reg2 = /\w/gim; 

reg1.global 輸出 false; 

reg2.ignorecase 輸出true 

reg1.source 輸出「\w」 

reg2.source輸出「\w」

注意:不能對他們進行賦值,如:reg1.global = true是不生效的

正規表示式物件方法:test方法和exec方法

test(str)引數是字串,用於測試字串引數中是否存在匹配正規表示式模式的字串

示例:var reg1 = /\w/; 

reg1.test('a');輸出true 

reg1.test('$');輸出false

var reg2 = /\w/g; 

執行第一次reg2.test('ab')輸出true, 

第二次輸出true, 

第三次輸入false,第四次是true,這是由於lastindex在作怪 

while(reg2.test('ab'))

結果輸出1 2 (下標從0開始);注意:lastindex在非全域性下是不生效的。

字串物件方法:

search()

方法用於檢索字串中指定的子字串,或檢索與正規表示式相匹配的子字串

方法返回第乙個匹配結果index,查詢不到返回-1

search()方法不執行全域性匹配,它將忽略標誌g,並且總是從字串的開始進行檢索

match(reg)

方法將檢索字串,以找到乙個或多個與regexp匹配的文字

regexp是否具有標誌g對結果影響很大

如過regexp沒有標誌g,那麼match()方法就只能在字串中執行一次匹配

如果沒有找到任何的匹配內容就返回null,否則它將返回乙個陣列,其中存放了與它找到的匹配文字相關的資訊

返回陣列的第乙個元素存放的是匹配文字,而其餘的元素存放的是與正規表示式的子表示式匹配的文字

除了常規的陣列元素之外,返回的陣列還含有2個物件屬性

index宣告匹配文字的起始字元在字串的位置

input宣告對stringobject的引用

如過regexp具有標誌g,那麼match()方法將執行全域性搜尋,找到字串中的所有匹配子字串

如果沒有找到任何的匹配內容就返回null,如果找到了乙個或多個匹配子串,則返回乙個陣列

陣列元素中存放的是字串中的所有匹配子串,而且也沒有index屬性或input屬性

replace()

replace(str, replacestr)

replace(reg, replacestr)

replace(reg, function)

function會在每次匹配替換的時候呼叫,有四個引數:

1、匹配字串

2、正規表示式分組內容,沒有分組則沒有該引數

3、匹配項在字串中的index

4、原字串

split()

使用split方法把字串分割為字元陣列

『a,b,c,d』.split(',');結果['a','b','c','d']

『a,b,c,d』.split(/\d/);結果['a','b','c','d']

Javascript正規表示式

這段時間學習js,正好遇到了正規表示式。下面通過使用例項介紹一下正規表示式。正規表示式,又稱正規表示法 常規表示法 英語 regular expression,在 中常簡寫為regex regexp或re 電腦科學的乙個概念。正規表示式使用單個字串來描述 匹配一系列符合某個句法規則的字串。在很多文字...

JavaScript 正規表示式

一 什麼是正規表示式 正規表示式 regular expression 是乙個描述字元模式的物件。測試正規表示式 regexp 物件包含兩個方法 test 和exec 功能基本相似,用於測試字串匹配。test 方法在字串中查詢是否存在指定的正規表示式並返回布林值,如果存在則返回true,不存 在則返...

javascript 正規表示式

正規表示式 regexp物件 主要用於表單驗證 1 建立正規表示式 1 var ret pattern pattern是內容,可以是正規表示式的內容,可以是字元或是其他的內容 2 var rag new regexp pattern 括號內可以是雙引號或者單引號 2 正規表示式的exec方法 reg...