记得以前还在学校的时候,第一次接触 JavaScript 编程,算是第一种编程入门语言吧,总是分不清 search 和 match 这两个函数的区别,好不容易弄明白了,到了考试的时候又混淆了,唉!气。。。

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

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

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

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

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

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

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

JavaScript中search和match函数的区别相关推荐

  1. javascript 操作 url 中 search 部分方法函数

    javascript 操作 url 中 search 部分方法函数 前言 首先,我们需要知道什么是 search , search 是 window.location 的一个属性.举个例子: 首先,我 ...

  2. 译-在Python正则模式中search()和match()的区别是什么?

    问:在Python正则模式中search()和match()的区别是什么? 我已经阅读了现有的相关文档,但是我总是记不住,碰到类似的问题,我还要不断地查找再学习,我希望某个大神能够给个清晰的案例,让我 ...

  3. php strpose_php中strpos()和stripos()函数的区别用法详解

    本篇文章主要给大家介绍PHP中strpos()和stripos()函数的区别用法介绍,希望对需要的朋友有所帮助! strpos()函数 这个函数帮助我们找到一个字符串在另一个字符串中第一次出现的位置. ...

  4. Python中str()与repr()函数的区别——repr() 的输出追求明确性,除了对象内容,还需要展示出对象的数据类型信息,适合开发和调试阶段使用...

    Python中str()与repr()函数的区别 from:https://www.jianshu.com/p/2a41315ca47e 在 Python 中要将某一类型的变量或者常量转换为字符串对象 ...

  5. JavaScript中的立即执行函数

    原文链接 通常我们声明一个函数有以下几种方式: // 声明函数f1 function f1() {console.log("f1"); } // 通过()来调用此函数 f1();/ ...

  6. java引用类型和值类型_[Java教程]JavaScript中值类型和引用类型的区别

    [Java教程]JavaScript中值类型和引用类型的区别 0 2017-02-24 00:00:35 JavaScript的数据类型分为两类:原始类型和对象类型.其中,原始类型包括:数字.字符串和 ...

  7. 【Python】Python中str()和repr()函数的区别

    作用 在 Python 中要将某一类型的变量或者常量转换为字符串对象通常有两种方法,即 str() 或者 repr() . 区别与使用 参考文章:Python 中 str() 和 repr() 函数的 ...

  8. android scrollow嵌套listview,excel 中IDEX和MATCH函数嵌套应用.doc

    excel 中IDEX和MATCH函数嵌套应用 2007-12-3 1,ADO-SQL 1,数据表 表头在第一行: 2,Where子句中,各条件要用括号( )分开: 字符串变量用法:客户='" ...

  9. 有没有更好的方法在JavaScript中执行可选的函数参数? [重复]

    本文翻译自:Is there a better way to do optional function parameters in JavaScript? [duplicate] This quest ...

最新文章

  1. 连华为都在研究的计算机视觉,到底有多牛?
  2. python的工资待遇-python数据分析师待遇有多少?工资待遇如何?
  3. 基于mqtt协议的消息推送服务器,基于 MQTT 协议的推送服务
  4. 记录不认识的英文单词
  5. 如何在服务器中找到数据库文件夹,如何在服务器中找到数据库文件
  6. 这里有 8 个流行的 Python 可视化工具包,你喜欢哪个?
  7. django博客项目7
  8. POJ 1716 Integer Intervals【差分约束】
  9. 心音与心电信号分析之一--6.26--心音信号数字滤波
  10. arcpy利用XY创建点
  11. 网易云kali linux工具,在kali下如何安装网易云音乐
  12. tp摄像头的默认地址_TP-LINK摄像头支持IP地址自动跟随啦!
  13. python+opencv 批量修改视频分辨率
  14. OperationException: CLIENT: CLIENT_ERROR cannot increment or decrement non-numeric value
  15. 随机误差与Allan方差的理解
  16. 研究日记:虚拟歌姬自动调教之歌曲音频切割的问题
  17. Dell服务器做磁盘阵列
  18. java 自行车_JAVA 2020款山地车盘点
  19. 【python数据类型】
  20. 一篇文章读懂身份技术发展简史

热门文章

  1. 古币杂谈:楚国鬼脸钱
  2. Spring Boot 实现企业微信消息推送
  3. 调试腾讯转码接口报错问题{“code“:4100,“message“:“\u8eab\u4efd\u8ba4\u8bc1\u5931\u8d25\uff0c\u53c2\u6570\u9519\u8b
  4. nginx pathinfo配置,适用于较高版本的nginx
  5. Windows核心编程笔记(二十一) 硬件输入模型和局部输入状态
  6. 关于python语言数值操作符、以下选项错误的是 答案是_关于Python语言数值操作符,以下选项中描述错误的是...
  7. 针对GEE中的Landsat 8 sr产品去云处理
  8. 树与树算法二叉树的层次遍历/广度遍历/深度遍历详解与代码实现
  9. AutoCompleteTextView使用
  10. [小黄书小程序]主页面笔记图片高度自适应及上拉无限加载及下拉更新