字符串的模式匹配方法
来源:互联网 发布:linux udp端口禁用 编辑:程序博客网 时间:2024/05/17 01:53
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前端精髓为您提供,喜欢的同学记得点击收藏或者点赞哦!
- 字符串的模式匹配方法
- 字符串的模式匹配
- 字符串的模式匹配
- 字符串的模式匹配
- 字符串的模式匹配
- 字符串的模式匹配
- 字符串的模式匹配
- 字符串的模式匹配
- (未完)字符串模式匹配的几个方法
- 字符串的简单模式匹配
- 简单的字符串模式匹配
- 回溯的字符串模式匹配
- 字符串的多模式匹配
- 字符串的模式匹配KMP
- 字符串的模式匹配问题
- 正则表达式(RegExp)的方法和字符串的模式匹配方法
- KMP字符串模式匹配的C实现
- 字符串的模式匹配算法 KMP
- 高级技巧之函数节流
- 异步脚本
- 重新认识GET吧!
- 延迟脚本
- 理解Promise的3种姿势
- 字符串的模式匹配方法
- C#信号的使用方法---c#中AutoResetEvent
- DOM操作之确定元素大小
- Async/Await替代Promise的6个理由
- 利用tomcat在linux服务器发布项目
- 20170930 编译型语言和解释型语言
- Spring mvc DispatchServlet 实现机制
- sublime text 3 注册码
- Java排序算法总结(汇总版)