Nodejs正則表達式函數之match、test、exec、search、split、replace使用詳解

記性很差的人,老是容易把記住的東西忘記掉!爲了之後忘記的時候可以更快的找到並複習,最好仍是作筆記!好記性不如賴筆頭嘛!正則表達式

1. Match函數數組

使用指定的正則表達式函數對字符串驚醒查找,並以數組形式返回符合要求的字符串函數

原型:stringObj.match(regExp)索引

參數:字符串

stringObj 必選項,須要去進行匹配的字符串
RegExp 必選項,指定的正則表達式
返回值:若是沒有使用g(全局匹配)選項,則返回第一個匹配的字符串、該字符串所在位置及原始字符串組成的數組,若是使用g選項,則返回全部匹配的字符串組成的數組input

  示例1:
  var str = 「aaabbbcccaaabbbccc」;
  var res = str.match(/aaa/); //沒有使用g選項
  console.log(res); //輸出[ 'aaa', index: 0, input: 'aaabbbcccaaabbbccc' ] 第一個表示匹配的字符串;第二個表示匹配的字符串坐在的索引位置,從0開始計算;第三個表示原始字符串;
  示例2:
  var str = 「aaabbbcccaaabbbccc」;
  var res = str.match(/aaa/g); //使用g選項,全局匹配
  console.log(res); //輸出[ 'aaa', 'aaa' ] 全部匹配的字符串組成的數組 原型


2.exec函數string

使用指定的正則表達式模式去字符串中查找匹配項,並以數組形式返回,若是未查找到則返回nullit

原型:regExp.exec(stringObj)console

參數:

regExp 必選項,表示指定的正則表達式模式
stringObj 必選項,表示須要查找的字符串
返回值:不管有無g選項,都返回第一個匹配的字符串、該字符串所在位置及原始字符串組成的數組,可是該方法能夠返回子匹配項,是match所不能及的

  示例1:
  var str = 「aaabbbcccaaabbbccc」;
  var regExp = /aaa/; //未使用g選項
  var res = regExp .exec(str);
  console.log(res); //輸出[ 'aaa', index: 0, input: 'aaabbbcccaaabbbccc' ]
  示例2:
  var str = 「aaabbbcccaaabbbccc」;
  var regExp = /aaa/g; //使用g選項
  var res = regExp .exec(str);
  console.log(res); //輸出[ 'aaa', index: 0, input: 'aaabbbcccaaabbbccc' ]
  示例3:
  var str = 「aaabbbccc1234aaabbbccc」;
  var regExp = /ccc([0-9]+)aaa/;
  var res = regExp .exec(str);
  console.log(res); //輸出[ 'ccc1234aaa', '1234', index: 6, input: 'aaabbbccc1234aaabbbccc' ] 第一個表示整個正則表達式所匹配的內容;第二個表示()內容的子表達式所匹配的內容;第三個和第四個同上
  示例4:
  var str = 「aaabbbccc1234aaabbbcccaaabbbccc5678aaabbbccc」;
  var reg = /ccc([0-9]+)aaa/;
  var res = reg.exec(str);
  console.log(res); //輸出同示例三,由於exec只返回第一個匹配的字符串,若是想所有返回,則須要藉助while循環和g參數來實現,以下
  var str = 「aaabbbccc1234aaabbbcccaaabbbccc5678aaabbbccc」;
  var reg = /ccc([0-9]+)aaa/g;
  while(res = reg.exec(str)){
   console.log(res);
  }
  //輸出以下:
[ 'ccc1234aaa', '1234', index: 6, input: 'aaabbbccc1234aaabbbcccaaabbbccc5678aaabbbccc' ][ 'ccc5678aaa', '5678', index: 28, input: 'aaabbbccc1234aaabbbcccaaabbbccc5678aaabbbccc' ]
//使用這個方法時切記加上g選項,不然while循環將沒法跳出,每次都循環第一個匹配項,致使死循環,可能卡死!


3.test函數

原型:regExp.test(str)

參數:regExp表示正則表達式模式 stringObj表示須要進行匹配的字符串

返回值:布爾類型,匹配則返回true,不然false

  示例1:
  var str = 「aaabbbcccaaabbbccc」;
  var reg = /[a-z]+/;
  var res = reg.test(str);
  console.log(res); //輸出true
  示例2:
  var str = 「aaabbbcccaaabbbccc」;
  var reg = /[0-9]+/;
  var res = reg.test(str);
  console.log(res); //輸出false
  //該函數通常用來檢測某字符串是否符合指定的規則
4.search函數

原型:stringObj.search(regExp)

參數:regExp表示正則表達式模式 stringObj表示須要進行匹配的字符串

返回值:返回第一個匹配的字符串所在的位置(偏移量),從0開始

  示例1:
  var str = 「aaabbbcccaaabbbccc」;
  var reg = /ccc/;
  var res = str.search(reg);
  console.log(res); //輸出 6


5.replace函數

原型:stringObj.replace(regExp, replaceText)

參數:regExp表示正則表達式模式,stringObj表示須要進行匹配的字符串,replaceText表示替換成該文本內容,replaceText也能夠是返回字符串的一個函數

返回值:返回替換以後的字符串

  示例1:
  var str = 「aaabbbcccaaabbbccc」;
  var reg = /aaa/;
  var res = str.replace(reg, ’111′);
  console.log(res);//返回111bbbcccaaabbbccc ,只替換第一個匹配項,若須要替換全部則須要使用g選項
5.split函數

原型:stringObj.split([separator[, limit]])

參數:separator表示分隔符(此處也能夠是正則表達式),stringObj表示須要進行匹配的字符串,limit用來限制返回數組元素的個數

返回值:返回分割後的數組

  示例1:   var str = 「aaa,bbb,ccc」;   var reg = /,/;   var res = str.split(reg);   console.log(res); //輸出[ 'aaa', 'bbb', 'ccc' ]   //其實這裏能夠簡單的寫爲var res = str.split(「,」);   示例2:   var str = 「aaa,bbb:ccc@ddd#eee」;   var reg = /[,:@#]/;   var res = str.split(reg);   console.log(res); //輸出[ 'aaa', 'bbb', 'ccc', 'ddd', 'eee' ] 這纔是用正則的強大之處   示例3.   var str = 「aaa,bbb:ccc@ddd#eee」;   var reg = /[,:@#]/;   var res = str.split(reg, 3);   console.log(res); //輸出[ 'aaa', 'bbb', 'ccc'] Ok今天的筆記到此爲止,有什麼不對的地方,歡迎指正!

相關文章
相關標籤/搜索