肃宁一中艺术节
当前位置:肃宁一中艺术节 > Web开发 > JavaScript > 正文  |  快速导航:ASP PHP JSP ASP.NET JavaScript JQuery Extjs Ajax Silverlight Flex WebService WCF prototype mootools Dojo
  • 吕慧仪身高:JS中search与match的区别和用法

  • 字号:[ ]2014-1-9 21:26:35  阅读:99次  来源:乐猪网  编辑:银河精灵  收藏
  • 摘要:在JavaScript编程中,根据关键词与字符串进行匹配,常?;崾褂胹earch和match这两个内置函数。很多朋友跟我一样,经常把两个方法混淆,下面笔者将这两个方法的区别和用法总结到一篇文章中。
  • 肃宁一中艺术节 www.sdaiyun.cn search 函数在一个字串对象(string object)中查找关键词字串(规范表达式,regular expression),若匹配(即在目标字串中成功找到关键词)则返回关键词在目标字串中第一次出现的位置序列,反之,如果不匹配,就返回-1。

    search 方法
    返回与正则表达式查找内容匹配的第一个子字符串的位置。
    stringObj.search(rgExp)

    参数
    stringObj
    必选项。要在其上进行查找的 String 对象或字符串文字。
    rgExp
    必选项。包含正则表达式模式和可用标志的正则表达式对象。

    说明
    search 方法指明是否存在相应的匹配。如果找到一个匹配,search 方法将返回一个整数值,指明这个匹配距离字符串开始的偏移位置。如果没有找到匹配,则返回 -1。

    以下示例在目标字串“乐猪网是一个编程入门网站,一个学习编程的乐园!”中查找“编程”,返回值为6,因为字符“编程”第一次出现时其常规序列排在第七位,而 JavaScript 从 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 方法
    使用正则表达式模式对字符串执行查找,并将包含查找的结果作为数组返回。
    stringObj.match(rgExp) 

    参数
    stringObj
    必选项。对其进行查找的 String 对象或字符串文字。
    rgExp
    必选项。为包含正则表达式模式和可用标志的正则表达式对象。也可以是包含正则表达式模式和可用标志的变量名或字符串文字。

    说明
    如果 match 方法没有找到匹配,返回 null。如果找到匹配返回一个数组并且更新全局 RegExp 对象的属性以反映匹配结果。

    match 方法返回的数组有三个属性:input、index和lastIndex。Input 属性包含整个的被查找字符串。Index 属性包含了在整个被查找字符串中匹配的子字符串的位置。LastIndex 属性包含了最后一次匹配中最后一个字符的下一个位置。

    如果没有设置全局标志 (g),数组的0元素包含整个匹配,而第 1 到 n 元素包含了匹配中曾出现过的任一个子匹配。这相当于没有设置全局标志的 exec 方法。如果设置了全局标志,元素0到n中包含所有匹配。

    不建立规则前提下,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。

  • 顶一下
    (0)
    0%
    踩一下
    (0)
    0%
肃宁一中艺术节 版权所有 Copyright © 2012-2015 www.sdaiyun.cn All rights reserved.
本站用于学习交流,部分文章来源于网络,如果不慎侵犯了您的权益,请联系我们删除!
粤ICP备12000837号
武汉助孕包成功 | 上海代孕机构 | 代孕 | 深圳代孕 | 广州代怀孕 |
  • 保亭举办国际禁毒日“全民彩妆徒步”活动_一起来看流星雨mp4 2019-07-19
  • 5G商用拓宽互联网入口_特种部队军衔经验表 2019-07-19
  • 为什么要制定《关于实施教育扶贫工程的意见》?_无双乱舞4.27 2019-07-19
  • 汇聚民心 护航发展——国际社会热评中国共产党近年来执政能力建设 2019-07-19
  • 【雄安新区两周年系列评论①】规划既定,期待绘制最美“雄安画卷”_真情满天下闽南语全集 2019-07-19
  • 奔驰GLS终于不再孤独,但宝马X7不止是来作陪的!_yc8充值 2019-07-19
  • 湖北举行第29次全国助残日系列活动_侯佩岑 周杰伦 2019-07-19
  • 跨国企业“大佬”眼中新时代的福建:大有机遇,更有信心_n72手电筒 2019-07-19
  • 清明小长假 超1600万人次游荆楚旅游收入96.44亿_kodak z730 2019-07-19
  • 临桂区平水村种植中药材壮大集体经济_尹恩惠 姜志焕 2019-07-19
  • 马尾在全市率先推出“一窗受理”升级版 三类窗口合并 _覆雨翻云邪王天下 2019-07-19
  • 为中菲友好合作描绘新蓝图_四川什坊 2019-07-19
  • 第二十届世界肉类大会_前锋燃气灶价格 2019-07-19
  • 【解码安徽新信号】实现贫困人口全面脱贫_陆奕彤 2019-07-19
  • 柳州:北部三县受灾严重 多条河流超警_名校博士后逼返航班 2019-07-19
  • 武汉助孕包成功 | 上海代孕机构 | 代孕 | 深圳代孕 | 广州代怀孕 |
  • 保亭举办国际禁毒日“全民彩妆徒步”活动_一起来看流星雨mp4 2019-07-19
  • 5G商用拓宽互联网入口_特种部队军衔经验表 2019-07-19
  • 为什么要制定《关于实施教育扶贫工程的意见》?_无双乱舞4.27 2019-07-19
  • 汇聚民心 护航发展——国际社会热评中国共产党近年来执政能力建设 2019-07-19
  • 【雄安新区两周年系列评论①】规划既定,期待绘制最美“雄安画卷”_真情满天下闽南语全集 2019-07-19
  • 奔驰GLS终于不再孤独,但宝马X7不止是来作陪的!_yc8充值 2019-07-19
  • 湖北举行第29次全国助残日系列活动_侯佩岑 周杰伦 2019-07-19
  • 跨国企业“大佬”眼中新时代的福建:大有机遇,更有信心_n72手电筒 2019-07-19
  • 清明小长假 超1600万人次游荆楚旅游收入96.44亿_kodak z730 2019-07-19
  • 临桂区平水村种植中药材壮大集体经济_尹恩惠 姜志焕 2019-07-19
  • 马尾在全市率先推出“一窗受理”升级版 三类窗口合并 _覆雨翻云邪王天下 2019-07-19
  • 为中菲友好合作描绘新蓝图_四川什坊 2019-07-19
  • 第二十届世界肉类大会_前锋燃气灶价格 2019-07-19
  • 【解码安徽新信号】实现贫困人口全面脱贫_陆奕彤 2019-07-19
  • 柳州:北部三县受灾严重 多条河流超警_名校博士后逼返航班 2019-07-19