JavaScript 正規表示式

2021-08-22 04:48:39 字數 3341 閱讀 9110

123

45

let regexp = /a+/

// or

let regexp = new regexp('a+')

// or

let regexp = new regexp(/a+/, 'g')

標誌作用

g全域性匹配

y粘滯匹配

i忽略大小寫

m匹配多行

g標誌返回多個符合正則的匹配結果

1

2

'foo bar'.match(/\w+/g)// [ 'foo', 'bar' ]

'foo bar'.match(/\w+/) // [ 'foo', index: 0, input: 'foo bar' ]

注意, 未使用g標誌時,呼叫regexp.exec只返回首次匹配結果

123

4567

891011

12

let regexp = /\w+/g

let text = 'foo bar'

console.log(regexp.exec(text)) // [ 'foo', index: 0, input: 'foo bar' ]

console.log(re.lastindex) // 3

console.log(regexp.exec(text)) // [ 'bar', index: 4, input: 'foo bar' ]

console.log(re.lastindex) // 7

// 對比

regexp = /\w+/

console.log(regexp.exec(text)) // [ 'foo', index: 0, input: 'foo bar' ]

console.log(re.lastindex) // 3

console.log(regexp.exec(text)) // [ 'foo', index: 0, input: 'foo bar' ]

console.log(re.lastindex) // 3

m標誌匹配多行.如果使用m標誌,正規表示式中的^和$將匹配每一行的開始與結束(而非整個字串的開始和結束)

1

2

'a\nb\nc'.match(/^\w$/gm) // [ 'a', 'b', 'c' ]

'a\nb\nc'.match(/^\w$/g) // null

y標誌僅在正則物件的lastindex屬性所處位置搜尋

123

4

regexp = /b/y

console.log(regexp.exec('abc'))

regexp.lastindex = 1

console.log(regexp.exec('abc'))

部分資料稱y匹配失敗後不會重置lastindex屬性的說法是錯的

123

4567

let regexp = /\w+/y

text = 'foo'

console.log(regexp.lastindex) // 0

console.log(regexp.exec(text)) // [ 'foo', index: 0, input: 'foo bar' ]

console.log(regexp.lastindex) // 3

console.log(regexp.exec(text)) // null

console.log(regexp.lastindex) // 0

符號匹配示例^

匹配開始

$匹配結束

*匹配前乙個表示式0次以上

+匹配前乙個表示式1次以上

?匹配前乙個表示式0/1次,跟在* + ? {} 後表非貪婪(預設貪婪)

.匹配單個任意字元,換行符除外

()捕獲括號

(?:)

非捕獲括號

x(?=y)

正向肯定查詢,x後有y時匹配x

/a(?=b)/.exec('abc')  // [ 'a', index: 0, input: 'abc' ]

x(?!y)

正向否定查詢,x後沒有y時匹配x

/a(?!c)/.exec('ab') // [ 'a', index: 0, input: 'ab' ]

(?<=y)x

反向肯定查詢

/(?<=a)b/.exec('ab') // [ 'b', index: 1, input: 'ab' ]

(?反向否定查詢

/(?x|y

匹配x或y

匹配前乙個字元n次

匹配前乙個字元[n, m]次

匹配前乙個字元最少n次

[xyz]

匹配方括號中的任意乙個字元.可使用"-"指定乙個範圍,方括號中的 . 和 * 無特殊意義

/[a-z]/ /[\u4e00-\u9fff ]/

[^xyz]

匹配未包含在方括號中的字元

/[^a-z]/

[\b]

匹配退格

\b匹配詞的邊界(除大小寫字母 下劃線 數字外的字元都被認為是邊界)

\b匹配非單詞邊界

\cx?

\d匹配數字

\dc非數字字元

\f匹配換頁符

\n匹配換行符

\r匹配回車符

\s匹配空白字元,包括\f \n \r 等

\s匹配非空白字元

\t匹配製表符(tab)

\v匹配垂直製表符

\w匹配乙個字母/數字/下劃線

\w匹配乙個非字母/數字/下劃線的字元

\n匹配之前第n個子字串

/(a)(b)\1/.exec('aba') // aba

\0匹配null

\xhh

匹配ascii字元

\uhhhh

匹配unicode字元

/\u6211/.exec('我們') // 我

\u(設定u標誌時)匹配unicode字元

/\u/u.exec('我們') // 我

返回陣列,包含匹配的字元.未找到匹配則返回null

1

2

/(a)(b)/.exec('abc') 

// [ 'ab', 'a', 'b', index: 0, input: 'abc' ]

判斷正則是否匹配某個字串,返回boolean

1

2

/(a)(b)/.test('abc')

// true

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...