当前位置:首页 > Web开发 > 正文

如果要全局匹配

2024-03-31 Web开发


 (1)语法
   var patt=new RegExp(pattern,modifiers); 或  var patt=http://www.mamicode.com/pattern/modifiers;

  好比:var re = new RegExp("\\w+","g");
      var re = /\w+/g;

 (2)修饰符

  i 执行对巨细写不敏感的匹配。
  g 执行全局匹配(查找所有匹配而非在找到第一个匹配后遏制)。
  m 执行多行匹配。

 (3)转义

   "\w" 是错的,正确的应该是"\\w"

2、RegExp 东西属性

  global RegExp 东西是否具有标识表记标帜 g。
  ignoreCase RegExp 东西是否具有标识表记标帜 i。
  multiline RegExp 东西是否具有标识表记标帜 m。

  lastIndex 一个整数,,标示开始下一次匹配的字符位置。(上一次匹配文本之后的第一个字符的位置)

  (1)不具有标识表记标帜 g 和不暗示全局模式的 RegExp 东西不能使用 lastIndex 属性。
  (2)如果在告成地匹配了某个字符串之后就开始检索另一个新的字符串,需要手动地把这个属性设置为 0。
  (3)当要领 exec() 或 test() 再也找不到可以匹配的文本时,它们会自动把 lastIndex 属性重置为 0。

  source 正则表达式的源文本,不包孕i、g、m。/

3、RegExp 东西要领

  compile 在 1.5 版本中已废弃。 编译正则表达式。 (不掌握)

  exec 检索字符串中指定的值。返回一个数组 或 null。数组中元素第一个是匹配到的值,后面的都是子表达式的值(如果存在子表达式)。
   (1)如果没有子表达式,那么返回数组只有一个元素。
       如果有了子表达式,那么从第二个元素开始为依次匹配到的字表达式功效的值。
   (2)一次只匹配一个值,如果要全局匹配,需要循环挪用exec。
      var str = "Visit W3School, W33Sdf45c32h1ool is a place to study web techno34logy.";
      var patt = new RegExp("\\d{2}","g");
      var result;
      while ((result = patt.exec(str)) != null) {
        document.write("result = "+result +" lastIndex = "+patt.lastIndex);
        document.write("<br />");
      }
   (3)循环中重复地挪用 exec() 要领是获得全局模式的完整模式匹配信息独一的要领。

  test 检索字符串中指定的值。返回 true 或 false。 等价于:(pattern.exec(str) != null)。
    一般校验字段都使用开始和结束符来做全局匹配。好比/^\d{11}$/
    全局匹配g的使用:每执行一次test要领 lastIndex会转变- 貌似没啥感化。
      var str = "The rain in Spain stays mainly in the plain";
      var patt1 = new RegExp("ain", "g");

                    for(i = 0; i < 4; i++) {

        document.write(patt1.test(str)+" - ");
        document.write("index now at: " + patt1.lastIndex);
        document.write("<br />");
      }

  toString 返回正则表达式的字符串。

 

4、String 东西的相关要领

  search 找到第一个匹配的字符串,返回子串的起始位置索引或-1。(不执行全局匹配,它将忽略标识表记标帜g)

  match 找到一个或多个正则表达式的匹配,返回匹配到的数组或null。 (默认只匹配一次,全局匹配设置修饰符g)

    regexp 必须。规定要匹配的模式的 RegExp 东西。如果该参数不是 RegExp 东西,则需要首先把它通报给 RegExp 结构函数,将其转换为 RegExp 东西。
      如:str.match(/aa/i);
        str.match(new RegExp(/aa/i);全局匹配aa
        str.match("/aa/i"); 注意:这里匹配的是匹配/aa/i,会转换成RegExp东西,可以看出没法设置修饰符i、g。

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/31109.html