常用的字符類:
/./ : 小數點,匹配除了換行符以外的所有東西,實際上等於/[^\/n]/
/\w/: 表示/[a-zA-z_]/
/\W/: 表示/[^a-zA-z_]/
/\d/: 表示/[0-9]/
/\D/: 表示/[^0-9]/
/\s/: 匹配空格和製表符
/\S/: 匹配除了空格和製表符之外的所有字符
量詞
指定個數
var pattern = /\d{3}/
匹配三個數字
指定範圍:
var pattern = /\d{1,2}/
匹配一個數字 或者兩個
var pattern = /\d{1,}/
匹配至少一個
var pattern = /\d+/
匹配至少一個
var pattern = /\d*/
匹配0個或者多個
var pattern = /\d?/
匹配至少0或者1次
非貪婪的重複
正則在默認的情況下,只要條件允許,就匹配儘可能多的次數
由貪婪轉換成非貪婪模式,需要在正則後面加一個問號
比如:
var pattern = /\d*?/
非貪婪模式是儘可能少的匹配,而不是隻匹配一個
var str = 'aaab'
var pattern = /\d+?b/
返回:aaab,而不是ab
選擇、分組、引用
選擇
var str = /html|js|css/
選擇匹配,只要匹配上,後面的就會都忽略
分組
var pattern = /(ab)+/
可以匹配abab
捕獲型分組
var str = 'abc'
var pattern = /(ab)c/
返回: ['abc', 'ab']
非捕獲型分組
var str = 'abc'
var pattern = /(?:ab)c/
返回: 'abc'
var str = 'abcd'
var pattern = /(a(b(c)))/
返回: ['abc', 'abc, 'bc', 'c']
分組在模式中使用
var str = 'ab cd ab'
var pattern = /(ab) cd \1/
這裏的\1 表示第一個分組,也就是(ab)
返回: ['ab cd ab', 'ab']
var pattern = /<([a-zA-Z]+)>(.*?)<\/\1>/
首尾匹配
不匹配字符,匹配位置
var pattern = /^js/
要求j必須是從字符的首字符匹配
這裏要注意和字符類裏面的區分,字符類裏面是取反
var pattern = /js$/
要求j必須是從字符的尾匹配
如何匹配純數字呢?
var pattern = /^\d+$/