javascript中的正則

1、RegExp對象

構造正則表達式:javascript

javascript//方式1:
var re = /\w+/;   //最經常使用的方式

//方式2:
var re = new RegExp("\\w+");  //注意轉義

1. reg.test(str)

描述:test() 方法執行一個檢索,用來查看正則表達式與指定的字符串是否匹配。返回 true 或 false。java

javascriptfunction testinput(re, str){
    var midstring;
    if (re.test(str)) {
        midstring = " contains ";
    } else {
        midstring = " does not contain ";
    }
    console.log(str + midstring + re.source);
}

testinput(/c{2}/, 'cainiao'); 
//"cainiao does not contain c{2}"

2. reg.exec(str)方法

  • exec() 方法爲指定的一段字符串執行搜索匹配操做。它的返回值是一個數組或者 null。
javascriptvar re = /d(b+)(d)/ig;
var result = re.exec("cdbBdbsbz");
console.log(result); 
//["dbBd", "bB", "d", index: 1, input: "cdbBdbsbz"]
  • 返回的數據:
對象 屬性/索引 描述 例子
result [0] 正則表達式最後的匹配項 dbBd
[1], ...[ n ] 子表達式匹配項 [1] = bB
[2] = d
index 第一個匹配項在原字符串中的索引 1
input 方法輸入的參數字符串 cdbBdbsbz
re lastIndex 下一次執行匹配開始索引的位置. 5
ignoreCase 指"i" 標識是否啓用 true
global 指"g" 標識是否啓用 true
multiline 指"m" 標識是否啓用 false
source 正則表達式的文本表示 d(b+)(d)

2、String對象

1. str.search(reg) vs reg.test(str)

*描述:search() 方法執行一個查找,看該字符串對象與一個正則表達式是否匹配。參數reg爲一個正則表達式對象,不然隱式調用new RegExp(reg)進行轉換。
若是匹配成功,則 search 返回正則表達式在字符串中首次匹配項的索引。不然,返回 -1。正則表達式

javascriptfunction testinput(re, str){
  var midstring;
  if (str.search(re) != -1){
    midstring = " contains ";
  } else {
    midstring = " does not contain ";
  }
  console.log (str + midstring + re);
}
testinput(/db*/, 'sdbbdee'); //sdbbdee contains /db*/

*reference: MDN參考express

2. str.match(reg) vs reg.exec(str)

  • 描述:當字符串匹配到正則表達式(regular expression)時,match() 方法會提取匹配項。reg參數爲一個正則對象,若不是,則隱式地調用new RegExp(reg) 進行轉換。返回數組,不匹配返回null。
javascriptvar str = "For more information, see Chapter 3.4.5.1";
var re = /(chapter \d+(\.\d)*)/i;  //不是用g的狀況
var found = str.match(re);
console.log(found);
//["Chapter 3.4.5.1", "Chapter 3.4.5.1", ".1", index: 26, input: "For more information, see Chapter 3.4.5.1"]
javascriptvar str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
var regexp = /[A-E]/gi;  //使用g時,found不存在index和input屬性
var found = str.match(regexp);
//['A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e']

*reference:MDN參考數組

3. str.replace(regexp|substr, newSubStr|function[, flags])

  • 描述:replace() 方法使用一個替換值(replacement)替換掉一個匹配模式(pattern)在原字符串中某些或全部的匹配項,並返回替換後的字符串。這個替換模式能夠是字符串或者正則表達式,替換值能夠是一個字符串或者一個函數。瀏覽器

  • 參數
    regexp:
    一個 RegExp 對象。該正則所匹配的內容會被第二個參數的返回值替換掉。
    substr:
    一個要被 newSubStr 替換的字符串。
    newSubStr:
    替換掉第一個參數在原字符串中的匹配部分。該字符串中能夠內插一些特殊的變量名。
    function:
    一個用來建立新子字符串的函數,該函數的返回值將替換掉第一個參數匹配到的結果。該函數的參數描述請參考 Specifying a function as a parameter 小節。.
    flags:
    注意:flags 參數在 v8 內核(Chrome and NodeJs)中不起做用。一個字符串,用來指定 regular expression flags 或其組合。在 String.replace method 中使用 flags 參數不是符合標準。使用一個帶有相應標誌(flags)的正則表達式(RegExp)對象來代替此參數。該參數的值應該是下面的一個或多個字符,具體做用見下:
    g 全局替換
    i 忽略大小寫
    m 多行模式app

  • 返回:
    一個新字符串,其中匹配模式的某些或全部匹配項被替換爲替換值。該方法並不改變調用它的字符串自己,而只是返回替換後的字符串.函數

javascriptvar re = /apples/gi;
var str = "Apples are round, and apples are juicy.";
var newstr = str.replace(re, "oranges");
print(newstr);
//"oranges are round, and oranges are juicy."

等同於:ui

javascriptvar str = "Apples are round, and apples are juicy.";
var newstr = str.replace("apples", "oranges", "gi");
print(newstr);
//"oranges are round, and oranges are juicy."
javascriptvar re = /(\w+)\s(\w+)/;
var str = "John Smith";
var newstr = str.replace(re, "$2, $1");
print(newstr); //'Smith John'

4. str.split(seperator, limit)

  • 描述:用來分割字符串的字符(串)。separator 能夠是一個字符串或正則表達式。 若是忽略 separator,則返回的數組包含一個由原字符串組成的元素。若是 separator 是一個空字符串,則 str 將會轉換成一個由原字符串中字符組成的數組。 limit一個整數,限定返回的分割片斷數量。split 方法仍然分割每個匹配的 separator,可是返回的數組只會截取最多 limit 個元素。

*注: 若是 separator 是一個正則表達式,且包含捕獲括號(capturing parentheses),則每次匹配到 separator 時,捕獲括號匹配的結果將會插入到返回的數組中。然而,不是全部瀏覽器都支持該特性。 spa

javascriptvar myString = "Hello 1 word. Sentence number 2.";
var splits = myString.split(/(\d)/);
console.log(splits);
//["Hello ", "1", " word. Sentence number ", "2", "."]
相關文章
相關標籤/搜索