javascript的search和match方法
创始人
2024-07-30 18:00:26
0

searchmatch都是javascript基于string的方法,都与字符匹配有关。

String类是不可变的,对String类的任何改变,都是返回一个新的String类对象。String 对象是 System.Char 对象的有序集合,用于表示字符串。String 对象的值是该有序集合的内容,并且该值是不可变的。

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

  1. MyStr="HELLO WORLD!";  
  2. re="L";  
  3. showstr=MyStr.search(re);  
  4. alert(showstr); 

我们看得出来,search方法只关心有无匹配,一旦找到匹配,就提供返回值,并且立刻中断查找的执行。上例中的目标字串(MyStr)有三个字母“L”,后两个search并不关心,因为条件已经满足,它退出了自身的匹配查找工作。据此原理,当我们只需要验证有无匹配的操作时,用search既简单又高效。以下再给出一个示例,这是一个自定义函数,它使用search方法简捷地完成字符匹配检测操作,若有匹配则将目标字串完整提取出来:

  1. function key_search(re, str){  
  2. echo = (str.search(re)!=-1 ? str : "无匹配");  
  3. return(echo);  

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

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

 

  1. str = "黑马在线动力是黑马的网站。是吗,黑马?";   
  2. new_ar = str.match(/黑马/gi);   
  3. echo=new_ar + " 关键词在原句中出现了 " + new_ar.length + " 次";  
  4. alert(echo); 

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

【编辑推荐】

  1. Web移动应用 HTML5 CSS和JavaScript
  2. Javascript中的函数声明和函数表达式
  3. 论Javascript的类继承
  4. 如何判断Javascript对象是否存在
  5. 快速排序(Quicksort)的Javascript实现

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...