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. window.onload = function() {
  6. var MyStr = "乐猪网是一个编程入门网站,一个学习编程的乐园!";
  7. var Re = "编程";
  8. var ShowStr = MyStr.search(Re);
  9. alert(ShowStr);
  10. alert(KeySearch("我是一个小小的程序员!", "编程"));
  11. }

我们看得出来,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)。

转载于:https://www.cnblogs.com/mz-2015/p/9562482.html

JavaScript中的match方法和search方法相关推荐

  1. Java 8 辣么大(lambda)表达式不慌之—–(四)示例-Collectors中的中的joining 方法和mapping方法

    Java 8 辣么大(lambda)表达式不慌之-–(四)示例-Collectors中的joining 方法和mapping方法 joining 方法 mapping方法 先定义好后面做示例要用的数据 ...

  2. 浅谈BufferedReader中的read()方法和readLine()方法

    浅谈BufferedReader中的read方法和readLine方法 前言:本人比较菜啦,如果有错误,还请大佬指正. 1. read方法 查看API文档我们可以发现BufferedReader类中的 ...

  3. JS中的call()方法和apply()方法用法总结

    1. 每个函数都包含两个非继承而来的方法:call()方法和apply()方法. 2. 相同点:这两个方法的作用是一样的. 都是在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖 ...

  4. asp.net TemplateField模板中的Bind方法和Eval方法

    TemplateField模板中为了能够有限制的或者取出数据库中某列的值时,可以用Bind和Eval方法来实现.以下是Bind方法的格式,Eval的格式也是和Bind一样的. Bind("列 ...

  5. TP框架中的A方法和R方法

    ThinkPHP 跨模块调用操作方法(A方法与R方法) 跨模块调用操作方法 前面说了可以使用 $this 来调用当前模块内的方法,但实际情况中还经常会在当前模块调用其他模块的方法.ThinkPHP 内 ...

  6. 【网络】HTTP中的GET方法和POST方法

    1.GET方法:获取资源 GET方法用来请求访问已被URL识别的资源.指定的资源经服务器端接续后返回内容.也就是说,如果请求的资源是文本,那就保持原样返回:如果像是CGI(Conmmon Gatewa ...

  7. 普歌-码灵团队-java中的equals方法和toString方法及总结

    普歌-码灵团队:Object类中的方法介绍及其用法 一.Object类 二.方法介绍 1.toString方法 2.重写equals方法: 3. 拓展 三.总结 一.Object类的简单介绍 二.Ob ...

  8. Android Handler中的handleMessage方法和post方法之源码剖析

    我们都知道,在子线程中进行UI操作(更新UI控件)包括以下四种方法: 1.Handler的handlerMessage()方法. 2.Handler的post()方法. 3.View的post()方法 ...

  9. python中的str方法和repr方法_Python中 的 __str__ 方法和 __repr__ 方法的区别有哪些

    Python中 的 __str__ 方法和 __repr__ 方法的区别有哪些 发布时间:2020-11-05 17:11:48 来源:亿速云 阅读:95 作者:Leah 本篇文章给大家分享的是有关P ...

最新文章

  1. deepin V20 启用Nvidia驱动方法
  2. 指针数组 数组指针 函数指针 指针函数
  3. 计算机视觉与深度学习 | 基于MATLAB 深度学习工具实现简单的数字分类问题(卷积神经网络)
  4. flutter底部导航栏
  5. js 自定义DOM事件
  6. Listview实现不同类型的布局
  7. JAVA的抽象类和接口
  8. java操作mysql视图_MySQL使用视图
  9. python推理拟合函数
  10. KiKaFramework V1.1发布
  11. 字符串分割和数组组合(spilt,join)
  12. 抖音有这样一个姑娘她活成了大家都想要的样子
  13. 电脑端压缩工具哪个好用
  14. 番茄编程助手_如何使用番茄法高效的写算法题?
  15. Apsara Clouder云计算专项技能认证:云服务器ECS入门
  16. 用Tinyproxy搭建自己的proxy server
  17. 【数据库】02 SQL语句
  18. zRender 曲线点击事件
  19. 无法超越的100米_百兆以太网传输距离_网线有哪几种?
  20. 计算机房弱电建设申请,弱电机房建设分类及要求

热门文章

  1. 给你工资1000一天,让你在没有网络手机电脑的大山里做森林管理工作半年,你愿意吗?
  2. 你是农村人吗,小时候放过牛吗,都有哪些好玩的趣事?
  3. 今日逢君君不识下一句
  4. 怎样的销售能快速成交别人?
  5. 2021年赚钱的建议
  6. 揭秘企业实现企业盈利有哪些原则?
  7. 有幸和一位企业家聊天,他白手起家
  8. 做互联网项目一定要做可循环,可积累的事情
  9. 私域经济运营能力最关键的三个指标
  10. 厂商为什么不能用前一代的处理器库存做一个便宜的笔记本电脑?