JavaScript String 对象正则匹配方法详解:search、replace、match 与 split
本文详细解析 JavaScript 中用于模式匹配的四个 String 方法:search、replace、match 和 split。重点介绍正则表达式在其中的应用,包括全局搜索、子表达式引用($1等)、以及字符串分割技巧,帮助开发者高效处理文本匹配与替换任务。
JavaScript String 正则匹配方法概述
在 JavaScript 中,String 对象提供了专门用于模式匹配的方法集合。
String 类型支持四种基于正则表达式的方法。
search 与 replace 方法详解
search() 方法用于执行检索操作,其参数为一个正则表达式,返回第一个匹配子串在原字符串中的索引位置;若未找到匹配项,则返回 -1。如果传入的参数并非正则表达式对象,该方法会先通过 RegExp 构造函数将其转换为正则表达式。需要注意的是,search() 不支持全局搜索(global search),因此它会忽略正则表达式中的 'g' 修饰符。
replace() 方法用于执行检索与替换操作。它接受两个参数:第一个是正则表达式,第二个是用于替换的字符串。该方法会在调用字符串中根据模式匹配子串,并将其替换为第二个参数指定的内容。若正则表达式包含 'g' 修饰符,则进行全文匹配替换;若第一个参数是普通字符串,则直接搜索并替换该特定字符串。
例如,执行 text.replace(/javascript/gi, 'JavaScript') 表示在变量 text 的全文中搜索不区分大小写的 'javascript',并将其替换为 'JavaScript'。
当替换字符串中包含形如 '$数字' 的序列时,replace() 方法会将该序列替换为与对应编号的子表达式所匹配的文本来替换。
例如定义正则表达式:var quote = /"([^"]*)"/g
执行 text.replace(quote, '“$1”') 时,系统会全文搜索与 /"([^"]*)"/ 匹配的字符串,并将其替换为 '“$1”'。这里的 $1 表示只将外部的双引号替换为中文半角引号,而存储在 $1 中的内容保持不变。$1 存储了指代与第一个左圆括号内的子表达式所匹配的字符串。
match 与 split 方法详解
match() 方法接收一个正则表达式作为唯一参数,返回一个由匹配结果组成的数组。如果传入的参数不是正则表达式,该方法会首先通过 RegExp 构造函数将其转换为正则表达式。
若该正则表达式带有 'g' 修饰符,match() 返回的数组元素将包含全文匹配得到的所有字符串。
若该正则表达式不带 'g' 修饰符,match() 仅检索第一个匹配项,但仍返回一个数组。该数组的第一个元素是匹配的整个字符串,后续元素则是表达式中所有用圆括号括起来的子表达式所匹配到的字符串,每个元素对应一个括号。
具体示例如下:
var url = /(\w*):\/\/([\w.]+)\/(\S*)\/;
var text = 'http://www.w3school.com.cn/jsref';
var result = text.match(url);
if(result != null) {
var fullurl = result[0];
var protocol =result[1];
var host = result[2];
var path = result[3];
}
split() 方法将字符串按照参数指定的分隔符拆分为多个子串,并返回由这些子串组成的数组。
例如:'123,345,789'.split(','); 返回结果 ['123','345','789']。
例如:'1, 2 , 3, 4 ,5 , 6'.split(/\s*,\s*/); 返回结果 ['1','2','3','4','5','6'],此例展示了利用正则表达式处理带有空格的分隔符。
以上内容为 JavaScript 中用于模式匹配的 String 方法的完整解析,旨在帮助读者深入理解并应用这些功能。
JS处理含Emoji或中文的字符串转数组乱码问题
2026-11-05 16:12:28
JS怎么使用展开运算符合并对象
2026-11-05 14:42:18
ES6+环境下判断JS对象为空的简洁写法
2026-11-05 12:12:23
怎么通过replacer函数自定义JS中JSON的格式化输出
2026-11-05 11:19:44
JS正则表达式基础:字面量与RegExp构造函数的区别及常用元字符
2026-11-05 11:16:58
