字符串的模式匹配方法
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前端精髓为您提供,喜欢的同学记得点击收藏或者点赞哦!
字符串的模式匹配方法相关推荐
- 算法训练二(字符串、模式匹配、堆栈、队列)(含解题思路)(上)
目录 7-1 好前缀 AC代码: 7-2 好后缀 AC代码: 7-3 [模板]KMP字符串匹配 AC代码: 7-5 接话茬 AC代码: 7-6 串的模式匹配 AC代码: 7-7 词频统计 AC代码: ...
- ASP.NET技巧:两个截取字符串的实用方法
两个截取字符串的实用方法(超过一定长度自动换行) 1/** <summary> 2 /// 截取字符串,不限制字符串长度 3 /// </summary& ...
- 字符串的模式匹配 (朴素模式匹配算法 ,KMP算法)
字符串的模式匹配 寻找字符串p在字符串t中首次出现的起始位置 字符串的顺序存储 typedef struct {char str[MAXSIZE];int length; }seqstring; 朴素 ...
- python加号换行,Python字符串拼接六种方法介绍
Python字符串拼接的6种方法: 1.加号 第一种,有编程经验的人,估计都知道很多语言里面是用加号连接两个字符串,Python里面也是如此直接用"+"来连接两个字符串: prin ...
- js mysql替换_JavaScript_js使用正则实现ReplaceAll全部替换的方法,JS 字符串有replace() 方法。但这 - phpStudy...
js使用正则实现ReplaceAll全部替换的方法 JS 字符串有replace() 方法.但这个方法只会对匹配到的第一个字串替换. 如下例: New Document var str = " ...
- C#开发中关于加密解密字符串的使用方法
C#开发中关于加密解密字符串的使用方法 C#加密解密字符串方法 首先在web.config | app.config 文件下增加如下代码: <?xml version="1.0&quo ...
- 【JS】JS中数值型字符串相加变成拼接字符串的解决方法
[JS]JS中数值型字符串相加变成拼接字符串的解决方法 参考文章: (1)[JS]JS中数值型字符串相加变成拼接字符串的解决方法 (2)https://www.cnblogs.com/xsjs/p/1 ...
- 在Python中连接字符串的首选方法是什么?
本文翻译自:Which is the preferred way to concatenate a string in Python? Since Python's string can't be c ...
- java字符串逐个分解_改进JAVA字符串分解的方法
改进JAVA字符串分解的方法 一.概述 大多数Java程序员都曾经使用过java.util.StringTokenizer类.它是一个很方便的字符串分解器,主要用来根据分隔符把字符串分割成标记(Tok ...
最新文章
- 第8章系统服务(简易音频播放器的实现)
- windows10 Selenium Chrome 驱动安装
- XKC's basketball team(2019徐州站网络赛E线段树)
- 使用Magicodes.SwaggerUI快速配置SwaggerUI以及设置API分组
- Linux IPC实践(12) --System V信号量(2)
- mysql datatype 类型_MySQL DataType--数值类型
- [转]程序员最容易犯的几个技术上的错误
- python opencv 找到圆点标定板所有点后通过距离找两个角点4
- 皮尔逊相关系数和斯皮尔曼相关系数
- 匹配物镜放大倍数与相机像元尺寸
- 10年计算机速度慢加固态硬盘行不行,给超过十年的老笔记本电脑换固态值不值?试过发现还不错...
- #includefile.h与#includefile.h的区别
- 剑指offer-20200226
- ❤️微信小程序 云开发 教程合集(视频+图文)免费❤️
- 量子计算 11 NSA的随机数阴谋
- 一级b计算机excel有几题,一级B练习的Excel题库.doc
- 【ELK】ELK菜鸟手记 (一) 环境配置+log4j日志记录——转自Master HaKu
- poedb.tw itemgen.php,流放之路【POE】【异界地图】初步了解如何开始打异界
- JavaScript說分明
- 长航安庆警方成功破获系列非法经营“笑气”案
热门文章
- 云+社区「开源之道」主题直播,这些技术大佬都说了哪些干货?
- Java 8 的这个新特性,用起来真的很爽!
- 鸿蒙 OS 2.0 来了!值得开发者关注的是什么?
- 华为 P40 “一胞三胎”,最贵价 10854 元
- Python 数据分析实战:经典的同期群分析
- 10 月全国程序员工资统计,一半以上的职位 5 个月没招到人!
- 重金悬赏丨2019 华为 IoT 开发者大赛喊你加入“群聊”,倾听科技的“声音”!...
- IBM 确认裁员约 1700 人;华为新款操作系统来了!开通 5G 服务不换卡不换号 | 极客头条...
- 程序员拯救乐坛?OpenAI 用“逆天”GPT2.0 搞了个 AI 音乐生成器
- AI 算法在 FPGA 芯片上还有这种操作?