search在一个字串对象(string object)中查找关键词字串(规范表达式,regular expression),若匹配(即在目标字串中成功找到关键词)则返回关键词在目标字串中第一次出现的位置序列,反之,如果不匹配,就返回-1。以下示例在目标字串“乐猪网是一个编程入门网站,一个学习编程的乐园!”中查找字母“编程”,返回值为6,因为字母“编程”第一次出现时其常规序列排在第七位,而JS从0开始起算,字母“乐”序列为0,字母“猪”为1,字母“编程”当然就是6了:

  1.  
    function KeySearch(Re, Str) {
  2.  
    var Result = (Str.search(Re) != -1 ? Str : "找不到匹配!");
  3.  
    return Result;
  4.  
    }
  5.  
     
  6.  
    window.onload = function() {
  7.  
    var MyStr = "乐猪网是一个编程入门网站,一个学习编程的乐园!";
  8.  
    var Re = "编程";
  9.  
    var ShowStr = MyStr.search(Re);
  10.  
    alert(ShowStr);
  11.  
    alert(KeySearch("我是一个小小的程序员!", "编程"));
  12.  
    }

我们看得出来,search方法只关心有无匹配,一旦找到匹配,就提供返回值,并且立刻中断查找的执行。上例中的目标字串(MyStr)有两个“编程”,后两个search并不关心,因为条件已经满足,它退出了自身的匹配查找工作。据此原理,当我们只需要验证有无匹配的操作时,用search既简单又高效。

match也是在目标字串对象中寻找与关键词匹配与否的一个方法,它的强大功能在于通过关键词的规则创建可以实现复杂搜寻功能,非常灵活。

不建立规则前提下,match可当作search来使用,语法也一样,不同的是,它返回的是关键词自身(若匹配)和null(若不匹配)——这没有关系,如果只是为了检测匹配。显然地,这不是它存在于javascript世界中的理由,它定有不同于search的特色,即通过规则创建完成实现通盘匹配。看下面例子:

  1.  
    var Str = "请问编程入门网是一个编程技能学习的网站吗?";
  2.  
    var ShowStr = Str.match(/编程/gi);
  3.  
    var Result = ShowStr + " 关键词在原句中出现了 " + ShowStr.length + " 次";
  4.  
    alert(Result);

上例中,第二行为创建规则表达式“/编程/gi”,双反斜杠内的“编程”为搜寻关键词,其后的参数“gi”表示全部匹配(同等于“g”,若只用“i”,只匹配一次)。这样的规则用于match方法,将返回有规则的数组,其形式为“编程,编程”,还可用length方法得到数组的长度(例中结果为2)。

最新文章

  1. shareSDK实现分享操作时只显示英文字体
  2. react-native 调用 TouchableOpacity (触摸透明) 时报了一个警告
  3. HDOJ 2089 不要62
  4. Cheatsheet: 2013 06.23 ~ 06.30, Farewell GoogleReader(2008.07.20~2013.06.30)
  5. [Android]天气App 1
  6. linux vi修改后如何保存
  7. hdu 2473 Junk-Mail Filter
  8. 切点算法模板(Cut-vertex)
  9. 利用Python实现kNN算法
  10. JavaScript数据可视化编程学习(一)Flotr2,包含简单的,柱状图,折线图,饼图,散点图
  11. Swift百万线程攻破单例(Singleton)模式
  12. MVC实例应用
  13. Bootstrap3基础 table-condensed 表格中的单元格紧凑一些
  14. Java17-java语法基础——泛型
  15. python-跨域问题
  16. Servlet和JSP比较
  17. 2 duplicate symbols for architecture“文件冲突”
  18. java中-的流-与操作
  19. 3-Python内置结构-列表
  20. HTML5之特效

热门文章

  1. rsyslog服务器同步其他服务器上面应用日志(如mysql审计日志 、nginx日志)
  2. js 中的 for 循环。。。
  3. Scala_Load csv data to hive via spark2.1
  4. (转)认识 Linux 文件系统
  5. spring双列
  6. MySQL分库分表的技巧
  7. 一个关于document.write()的问题
  8. Backbone源码风格
  9. asp.net 子域跨域 带cookie
  10. ubuntu16.04解决屏幕适应问题