String 类型定义了几个用于在字符串中匹配模式的方法。第一个方法就是 match() ,在字符串上调用这个方法,本质上与调用 RegExp 的 exec() 方法相同。 match() 方法只接受一个参数,要么是一个正则表达式,要么是一个 RegExp 对象。来看下面的例子。

var text = “cat, bat, sat, fat”;

var pattern = /.at/;

//与pattern.exec(text)相同

var matches = text.match(pattern);

alert(matches.index); //0

alert(matches[0]); //“cat”

alert(pattern.lastIndex); //0

本例中的 match() 方法返回了一个数组;如果是调用 RegExp 对象的 exec() 方法并传递本例中的字符串作为参数,那么也会得到与此相同的数组:数组的第一项是与整个模式匹配的字符串,之后的每一项(如果有)保存着与正则表达式中的捕获组匹配的字符串。

另一个用于查找模式的方法是 search() 。这个方法的唯一参数与 match() 方法的参数相同:由字符串或 RegExp 对象指定的一个正则表达式。 search() 方法返回字符串中第一个匹配项的索引;如果没有找到匹配项,则返回 -1 。而且, search() 方法始终是从字符串开头向后查找模式。看下面的例子。

var text = “cat, bat, sat, fat”;

var pos = text.search(/at/);

alert(pos); //1

这个例子中的 search() 方法返回 1 ,即 “at” 在字符串中第一次出现的位置。

为了简化替换子字符串的操作,ECMAScript提供了 replace() 方法。这个方法接受两个参数:第一个参数可以是一个 RegExp 对象或者一个字符串(这个字符串不会被转换成正则表达式),第二个参数可以是一个字符串或者一个函数。如果第一个参数是字符串,那么只会替换第一个子字符串。要想替换所有子字符串,唯一的办法就是提供一个正则表达式,而且要指定全局( g )标志,如下所示。

var text = “cat, bat, sat, fat”;

var result = text.replace(“at”, “ond”);

alert(result); //“cond, bat, sat, fat”

result = text.replace(/at/g, “ond”);

alert(result); //“cond, bond, sond, fond”

在这个例子中,首先传入 replace() 方法的是字符串 “at” 和替换用的字符串 “ond” 。替换的结果是把 “cat” 变成了 “cond” ,但字符串中的其他字符并没有受到影响。然后,通过将第一个参数修改为带有全局标志的正则表达式,就将全部 “at” 都替换成了 “ond” 。


好了,今天的文章就到这里,本文由Web前端精髓为您提供,喜欢的同学记得点击收藏或者点赞哦!



字符串的模式匹配方法相关推荐

  1. 算法训练二(字符串、模式匹配、堆栈、队列)(含解题思路)(上)

    目录 7-1 好前缀 AC代码: 7-2 好后缀 AC代码: 7-3 [模板]KMP字符串匹配 AC代码: 7-5 接话茬 AC代码: 7-6 串的模式匹配 AC代码: 7-7 词频统计 AC代码: ...

  2. ASP.NET技巧:两个截取字符串的实用方法

    两个截取字符串的实用方法(超过一定长度自动换行) 1/** <summary> 2        /// 截取字符串,不限制字符串长度 3        /// </summary& ...

  3. 字符串的模式匹配 (朴素模式匹配算法 ,KMP算法)

    字符串的模式匹配 寻找字符串p在字符串t中首次出现的起始位置 字符串的顺序存储 typedef struct {char str[MAXSIZE];int length; }seqstring; 朴素 ...

  4. python加号换行,Python字符串拼接六种方法介绍

    Python字符串拼接的6种方法: 1.加号 第一种,有编程经验的人,估计都知道很多语言里面是用加号连接两个字符串,Python里面也是如此直接用"+"来连接两个字符串: prin ...

  5. js mysql替换_JavaScript_js使用正则实现ReplaceAll全部替换的方法,JS 字符串有replace() 方法。但这 - phpStudy...

    js使用正则实现ReplaceAll全部替换的方法 JS 字符串有replace() 方法.但这个方法只会对匹配到的第一个字串替换. 如下例: New Document var str = " ...

  6. C#开发中关于加密解密字符串的使用方法

    C#开发中关于加密解密字符串的使用方法 C#加密解密字符串方法 首先在web.config | app.config 文件下增加如下代码: <?xml version="1.0&quo ...

  7. 【JS】JS中数值型字符串相加变成拼接字符串的解决方法

    [JS]JS中数值型字符串相加变成拼接字符串的解决方法 参考文章: (1)[JS]JS中数值型字符串相加变成拼接字符串的解决方法 (2)https://www.cnblogs.com/xsjs/p/1 ...

  8. 在Python中连接字符串的首选方法是什么?

    本文翻译自:Which is the preferred way to concatenate a string in Python? Since Python's string can't be c ...

  9. java字符串逐个分解_改进JAVA字符串分解的方法

    改进JAVA字符串分解的方法 一.概述 大多数Java程序员都曾经使用过java.util.StringTokenizer类.它是一个很方便的字符串分解器,主要用来根据分隔符把字符串分割成标记(Tok ...

最新文章

  1. 第8章系统服务(简易音频播放器的实现)
  2. windows10 Selenium Chrome 驱动安装
  3. XKC's basketball team(2019徐州站网络赛E线段树)
  4. 使用Magicodes.SwaggerUI快速配置SwaggerUI以及设置API分组
  5. Linux IPC实践(12) --System V信号量(2)
  6. mysql datatype 类型_MySQL DataType--数值类型
  7. [转]程序员最容易犯的几个技术上的错误
  8. python opencv 找到圆点标定板所有点后通过距离找两个角点4
  9. 皮尔逊相关系数和斯皮尔曼相关系数
  10. 匹配物镜放大倍数与相机像元尺寸
  11. 10年计算机速度慢加固态硬盘行不行,给超过十年的老笔记本电脑换固态值不值?试过发现还不错...
  12. #includefile.h与#includefile.h的区别
  13. 剑指offer-20200226
  14. ❤️微信小程序 云开发 教程合集(视频+图文)免费❤️
  15. 量子计算 11 NSA的随机数阴谋
  16. 一级b计算机excel有几题,一级B练习的Excel题库.doc
  17. 【ELK】ELK菜鸟手记 (一) 环境配置+log4j日志记录——转自Master HaKu
  18. poedb.tw itemgen.php,流放之路【POE】【异界地图】初步了解如何开始打异界
  19. JavaScript說分明
  20. 长航安庆警方成功破获系列非法经营“笑气”案

热门文章

  1. 云+社区「开源之道」主题直播,这些技术大佬都说了哪些干货?
  2. Java 8 的这个新特性,用起来真的很爽!
  3. 鸿蒙 OS 2.0 来了!值得开发者关注的是什么?
  4. 华为 P40 “一胞三胎”,最贵价 10854 元
  5. Python 数据分析实战:经典的同期群分析
  6. 10 月全国程序员工资统计,一半以上的职位 5 个月没招到人!
  7. 重金悬赏丨2019 华为 IoT 开发者大赛喊你加入“群聊”,倾听科技的“声音”!...
  8. IBM 确认裁员约 1700 人;华为新款操作系统来了!开通 5G 服务不换卡不换号 | 极客头条...
  9. 程序员拯救乐坛?OpenAI 用“逆天”GPT2.0 搞了个 AI 音乐生成器
  10. AI 算法在 FPGA 芯片上还有这种操作?