正则表达式

141 阅读3分钟

正则表达式修饰符

修饰符描述
g执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
i不区分大小写
m执行多行匹配
u含义为“Unicode 模式”,会正确处理四个字节的 UTF-16 编码。
y“粘连”(sticky)修饰符,y修饰符确保匹配必须从剩余的第一个位置开始,这也就是“粘连”的涵义。
sdotAll模式,即点(dot)代表一切字符。

RegExp 对象方法

test() 方法

  • 定义

test() 方法用于检测一个字符串是否匹配某个模式.
如果字符串中有匹配的值返回 true ,否则返回 false

  • 用法
  RegExpObject.test(string)
  let str="Hello world! are you ok";
  let patt=/word/g;   // 查找"Hello"
  let result=patt.test(str);  // true

exec() 方法

  • 定义

exec() 方法用于检索字符串中的正则表达式的匹配。
如果字符串中有匹配的值返回该匹配值,否则返回 null

  • 用法
     RegExpObject.test(string)
     let str="Hello world!";
     let patt=/Hello/g;   // 查找"Hello"
     let result=patt.exec(str);  // Hello
    

支持正则表达式的 String 对象的方法

search 方法

  • 定义

    search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。
    如果没有找到任何匹配的子串,则返回 -1。

  • 用法

      string.search(searchvalue)  // searchvalue	查找的字符串或者正则表达式。
      let str = 'My name is wang';
      let patt = /My/g;
      str.search(patt); // 0
    

match 方法

  • 定义

    match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。

    注意: match() 方法将检索字符串 String Object,以找到一个或多个与 regexp 匹配的文本。这个方法的行为在很大程度上有赖于 regexp 是否具有标志 g。如果 regexp 没有标志 g,那么 match() 方法就只能在 stringObject 中执行一次匹配。如果没有找到任何匹 配的文本, match() 将返回 null。否则,它将返回一个数组,其中存放了与它找到的匹配文本有关的信息。

  • 用法

      string.match(regexp)  // 规定要匹配的模式的 RegExp 对象。如果该参数不是 RegExp 对象,则需要首先把它传递给 RegExp 构造函数,将其转换为 RegExp 对象。
      var str="The rain in SPAIN stays mainly in the plain"; 
      var n=str.match(/ain/gi);  // [ain, AIN, ain, ain]
    

replace 方法

  • 定义

    replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

  • 用法

      string.replace(searchvalue,newvalue)
      // searchvalue  规定子字符串或要替换的模式的 RegExp 对象。请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模      式,而不是首先被转换为 RegExp 对象。
      
      // newvalue  一个字符串值。规定了替换文本或生成替换文本的函数。
      let str="My name is wang";
      let n=str.replace(/wang/gi, "zhang");  // My name is zhang
    

split 方法

  • 定义

    split() 方法用于把一个字符串分割成字符串数组。

  • 用法

      string.split(separator,limit)
      // separator 字符串或正则表达式,从该参数指定的地方分割。
      // limit 该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
      let str = 'My name is wang';
      let result = str.split(" ");  // [My, name, is, wang]
      let result2 = str.split(" ", 3);  // [My, name, is]
    

实例

原文参考 www.runoob.com/jsref/jsref…