javascript中的正则

一、RegExp对象

组织正则表达式:

javascript//体式格局1:
var re = /\w+/;   //最经常运用的体式格局

//体式格局2:
var re = new RegExp("\\w+");  //注重转义

1. reg.test(str)

形貌:test() 要领实行一个检索,用来检察正则表达式与指定的字符串是不是婚配。返回 true 或 false。

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
relastIndex下一次实行婚配最先索引的位置.5
ignoreCase指”i” 标识是不是启用true
global指”g” 标识是不是启用true
multiline指”m” 标识是不是启用false
source正则表达式的文本示意d(b+)(d)

二、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参考

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 多行形式

  • 返回:
    一个新字符串,个中婚配形式的某些或一切婚配项被替代为替代值。该要领并不转变挪用它的字符串自身,而只是返回替代后的字符串.

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."

等同于:

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 时,捕捉括号婚配的效果将会插进去到返回的数组中。但是,不是一切浏览器都支撑该特征。 

javascriptvar myString = "Hello 1 word. Sentence number 2.";
var splits = myString.split(/(\d)/);
console.log(splits);
//["Hello ", "1", " word. Sentence number ", "2", "."]
    原文作者:kugua
    原文地址: https://segmentfault.com/a/1190000002423768
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞