12345
let regexp = /a+/// or
let regexp = new regexp('a+')
// or
let regexp = new regexp(/a+/, 'g')
標誌作用
g全域性匹配
y粘滯匹配
i忽略大小寫
m匹配多行
g標誌返回多個符合正則的匹配結果
12
'foo bar'.match(/\w+/g)// [ 'foo', 'bar' ]'foo bar'.match(/\w+/) // [ 'foo', index: 0, input: 'foo bar' ]
注意, 未使用g標誌時,呼叫regexp.exec只返回首次匹配結果
1234567
891011
12
let regexp = /\w+/glet 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標誌,正規表示式中的^和$將匹配每一行的開始與結束(而非整個字串的開始和結束)
12
'a\nb\nc'.match(/^\w$/gm) // [ 'a', 'b', 'c' ]'a\nb\nc'.match(/^\w$/g) // null
y標誌僅在正則物件的lastindex屬性所處位置搜尋
1234
regexp = /b/yconsole.log(regexp.exec('abc'))
regexp.lastindex = 1
console.log(regexp.exec('abc'))
部分資料稱y匹配失敗後不會重置lastindex屬性的說法是錯的
1234567
let regexp = /\w+/ytext = '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
12
/(a)(b)/.exec('abc')// [ 'ab', 'a', 'b', index: 0, input: 'abc' ]
判斷正則是否匹配某個字串,返回boolean
12
/(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...