JavaScript正則表達式

 

1.什麼是正則表達式javascript

  • 按照語法規則去匹配符合條件的的字符串

 

2.RegExp對象java

 實例化RegExp對象:正則表達式

  • 1).字面量  例:var reg = /\bis\b/g;
  • 2).構造函數 例:var reg = new RegExp('\\bis\\b','g'); \\爲轉義表示

 

3.標識符數組

  • i:忽略大小寫
  • g:全局搜索
  • m:多行搜索

 

4.元字符函數

  • 字符分爲兩類:本來含義字符和元字符
  • 在正則表達式中 ^$(){}[].都不表明原義

 

5.字符類測試

  • 1).通常狀況下正則表達式中一個字符對應字符串中的一個字符

   []可用於建立一個類,所謂類是一個泛指,不是特指某個字符,能夠連寫 例[a-zA-Z]網站

  • 2).字符類取反:不屬於字符類的內容 例[^abc] 不屬於a或b或c的字符內容
  • 3).範圍類:[a-z] 屬於a-z這一字符範圍內的

***特殊例:var t = 2016-09-10 用 t.replace( /[0-9]/g,'x')結果爲xxxx-xx-xxspa

若使用t.replace(/[0-9-]/g,'x')結果爲xxxxxxxxxxregexp

  • 4).預約義類:

.除了回車換行以外全部字符對象

\d數字字符

\D非數字字符

\s空白字符

\S非空白字符

\w單詞字符

\W非單詞字符

  • 5).邊界字符

^以xxx開始

$以xxx結束

\b單詞邊界

\B非單詞邊界

 

6.量詞

  • ?:最多一次
  • +:至少一次
  • *:任意次
  • {n}:出現n次
  • {n,m}:出現n到m次
  • {n,}至少出現n次

 

7.貪婪與非貪婪模式

  • 貪婪模式:儘可能多的匹配

例: '12345678'.replace(/\d{3,6}/g,'x')

x78

  • 非貪婪模式:儘可能少的匹配,在量詞後加上?便可進入非貪婪模式

例: '12345678'.replace(/\d{3,6}?/g,'x')

xx78

 

8.分組

  • 分組:使用 () 能夠達到分組的功能,使量詞做用於分組
  • 或:使用 | 能夠達到或的效果
  • 反向引用:使用$1$2$3來捕獲分組內的內容

例:

'2015-12-01'.replace(/(\d{4})-(\d{2})-(\d{2})/,'$2/$3/$1')
"12/01/2015"

  • 忽略分組:不但願捕獲某些分組,在分組內加上?:就能夠

例:

'2015-12-01'.replace(/(?:\d{4})-(\d{2})-(\d{2})/,'$2/$3/$1')
"01/$3/12"

 

9.前瞻

  • 正則表達式從文本頭部向尾部開始解析,文本尾部方向,稱爲前
  • 前瞻就是在正則表達式匹配到規則的時候,向前檢查是否符合斷言,後顧/後瞻方向相反
  • javascript不支持後顧
  • 符合和不符合斷言稱爲確定/正向匹配和否認/負向匹配
  • 前瞻reg(?=assert)

'x2d.0s0d2iou'.replace(/\w(?=\d)/g,'Q')
"Q2d.0Q0Q2iou"

  • 後瞻reg(!?assert)

'a2*34vv'.replace(/\w(?!\d)/g,'x')
"ax*3xxx"

 

10.對象屬性

  • global 是否全文搜索 默認false
  • ignore case 是否大小寫敏感 默認false
  • multiline 多行搜索 默認false
  • lastindex 是當前表達式匹配內容的最後一個字符的下一個位置
  • source 正則表達式的文本字符串

 

11.test和exec方法

  • test 用於測試字符串參數中是否存在匹配正則表達式模式的字符串 匹配返回true 不匹配返回false 
  • exec 使用正則表達式模式對字符串執行搜索,並將更新全局RegExp對象的屬性以反映匹配結果 若沒有匹配結果則返回null 有匹配結果返回數組(數組中有index(聲明匹配文本的第一個字符的位置),input(存放被檢索的字符串string))

推薦一個正則表達式可視化網站 http://regexper.com

相關文章
相關標籤/搜索