正則表達式(regular expression)描述了一種字符串匹配的模式(pattern),能夠用來檢查一個串是否含有某種子串、將匹配的子串替換或者從某個串中取出符合某個條件的子串等。正則表達式
一個字符串中要匹配 is ,這時候,咱們須要頁面中只要是有is的單詞也會被匹配,\bis\b意思是,is先後含有單詞邊界。express
路徑中,如http://.*.jpg 匹配全部以http開頭,文件名和路徑隨意,.jpg結尾的路徑名稱。 分組的概念:(http://.*.jpg) 獲取匹配到的值 $1數組
再例如時間日期:\d{4}/\d{2}/\d{2},其中{...}表示量詞,這時候,有時/是-,那麼要進行或邏輯[/-]表示或 改善之後的正則:\d{4}[/-]\d{2}\d{2}函數
引入:咱們有時想匹配一個幾個字母,ab\t -> ab+tab,但有時,咱們想要泛指匹配某一類字符,這時候就須要類的概念,可使用元字符[]來構建一個簡單的類,a1b1c1d1.replace(/[abc]/g,'YES');好比:YES1YES2YES3d4(只匹配a或b或c)測試
字符取反,a1b1c1d1.replace(/[^abc]/g,'YES');好比:aYESbYES...(除了abc,其餘所有匹配)prototype
量詞放置在{}中3d
貪婪模式與非貪婪模式對象
分組放置於()中,這個很好理解,就像是數學中的運算,將括號中的元素當成一個總體.hello{2} --> helloo ; (hello){2} -->hellohello;(a|b|c|d)索引
符合和不符合特定斷言的稱爲(確定/正向)匹配和(否認/負向)匹配ip
前瞻是向後看,這一點不少人會比較犯糊塗,例如: \d{2}(?=\w{2}) 匹配形如 12aa中的aa.
對象屬性:global(g) ignore case(i) multiline(m)默認值全是false。
對象的方法:
test(): /\w/ 若是加上g參數,不停console.log(reg.test('ab')),第三次會錯 這就是lastIndex在做怪,1 , 2.其實咱們測試時,沒有必要g,弄明白每一個元素座標位置
exec(): /\d(\w)/ 匹配上會返回一個結果數組,第一個參數返回匹配結果,後面參數依次是子表達式所匹配的內容,就是咱們以前使用的$1,$2... res.index 返回每結果的索引
String.prototype.search(reg): 檢索知足正則的第一個子表達式,search忽略 g 標誌,始終從頭開始返回最前一個 String.prototype.match(reg): 非全局調用,返回值和RegExp的exec所返回的一致 忽略 g lastIndex返回0,有兩個屬性: index和input屬性
String.prototype.split(reg)
String.prototype.replace(str/reg,repStr)
String.prototype.replace(str/reg,function(a,b,c,d){})