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)。

JavaScript中的match方法和search方法的更多相关文章

  1. python 基础 8.3 match方法和search方法

    一,正则对象的split 方法 split(string[,maxsplit]) 按照能够匹配的字串讲string 分割后返回列表.maxsplit 用于指定最大分割次数,不指定将全部分割.来查找符合 ...

  2. javascript中的contains方法和compareDocumentPosition方法

    IE有许多好用的方法,后来都被其他浏览器抄袭了,比如这个contains方法.如果A元素包含B元素,则返回true,否则false.唯一不支持这个方法的是IE的死对头firefox.不过火狐支持com ...

  3. JavaScript中的apply()方法和call()方法使用介绍

    1.每个函数都包含两个非继承而来的方法:apply()和call(). 2.他们的用途相同,都是在特定的作用域中调用函数. 3.接收参数方面不同,apply()接收两个参数,一个是函数运行的作用域(t ...

  4. Java8新特性(一)_interface中的static方法和default方法

    什么要单独写个Java8新特性,一个原因是我目前所在的公司用的是jdk8,并且框架中用了大量的Java8的新特性,如上篇文章写到的stream方法进行过滤map集合.stream方法就是接口Colle ...

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

    原文引自:https://blog.csdn.net/ganyingxie123456/article/details/70855586 最近又遇到了JacvaScript中的call()方法和app ...

  6. js中的splice方法和slice方法简单总结

    slice:是截取用的 splice:是做删除 插入 替换用的 slice(start,end): 参数: start:开始位置的索引 end:结束位置的索引(但不包含该索引位置的元素) 例如: va ...

  7. JS中的call()方法和apply()方法用法总结(挺好 转载下)

    最近又遇到了JacvaScript中的call()方法和apply()方法,而在某些时候这两个方法还确实是十分重要的,那么就让我总结这两个方法的使用和区别吧. 1. 每个函数都包含两个非继承而来的方法 ...

  8. Mapper类/Reducer类中的setup方法和cleanup方法以及run方法的介绍

    在hadoop的源码中,基类Mapper类和Reducer类中都是只包含四个方法:setup方法,cleanup方法,run方法,map方法.如下所示: 其方法的调用方式是在run方法中,如下所示: ...

  9. java 中的set方法和get方法的理解

    get的意思是获取,set的意思是设置. get方法和set方法是实现类的封装访问的很好的工具. 当类中的变量设为private 时,他的意思就是说,只能通过自身和子类的访问,但是对于别的其他的类来说 ...

随机推荐

  1. POJ1027 The Same Game

    题目来源:http://poj.org/problem?id=1027 题目大意: 题目说的就是现在蛮流行的手机小游戏popstar,求用贪心方法能得到多少分. 小球有三种颜色:R/G/B.横向.纵向 ...

  2. ES6工作中常用知识点

    好久不动笔了 第一个知识点:import 和 export import导入模块.export导出模块 //全部导入 import people from './example' //有一种特殊情况, ...

  3. MySQL表结构,表空间,段,区,页,MVCC

    索引组织表(IOT表):为什么引入索引组织表,好处在那里,组织结构特点是什么,如何创建,创建IOT的限制LIMIT. IOT是以索引的方式存储的表,表的记录存储在索引中,索引即是数据,索引的KEY为P ...

  4. ssl加密

    握手前使用非对称加密, 握手后使用对称加密 前期握手就是用来协商对称加密算法的

  5. count(1), count(*), count(col) 的区别

    1.count(1)和count(*)都是统计表的总行数,两者执行结果相同.表没有主键或者唯一键索引时,两者都进行全表扫描:表上主键或者唯一键索引时,使用主键或者唯一键索引. 2.count(col) ...

  6. Spark Mllib里的如何对两组数据用皮尔逊计算相关系数

    不多说,直接上干货! import org.apache.spark.mllib.stat.Statistics 具体,见 Spark Mllib机器学习实战的第4章 Mllib基本数据类型和Mlli ...

  7. linux上的shutdown命令

    定时关机:shutdown -r now 立刻重新开机 shutdown -h now 立刻关机 shutdown -k now 'Hey! Go away! now....' 发出警告讯息, 但没有 ...

  8. 发布MVC网站的时候出现缺少WebHost等程序集问题的解决办法

    将一下几个dll 拷贝到bin文件夹下就行 链接:https://pan.baidu.com/s/17xhTdakzM_SQmOjJdZvviw 密码:c976

  9. subline 安装 package control 连接服务器失败,解决办法

    解决办法: 打开C:\Windows\system32\drivers\etc\hosts文件 增加 50.116.34.243 sublime.wbond.net50.116.34.243 pack ...

  10. swift学习笔记7

    不管做什么事,只要敬业点,把该作的做好.不要总找借口. 不要看不起小事,生活本是一件件小事的集合.细节决定成败. 士兵突击里面有句台词:他每做一件小事的时候,都好像抓住了一根救命稻草,到最后你才发现, ...