正则表达式replace()

2018-8-5 00:32| 作者: admin| 查看: 3499| 评论: 0|来自: 蚂蚁部落

使用此方法可以实现替换源字符串中指定内容的功能。

它的功能之所以强大,是因为此方法的第一个参数不但可以是普通的字符串,也可以是正则表达式。

正则表达式参数极大提高了此方法检索替换能力。

replace方法的普通使用方式可以参阅JavaScript replace()一章节。

下面将通过代码实例详细介绍一下结合正则表达式对此方法的使用方式。

语法结构:

[JavaScript] 纯文本查看 复制代码
str.replace(regexp,replacement)

参数解析如下:

(1).regexp:必需,正则表达式,用于在源字符串中检索将要被替换的内容。

(2).replacement:必需,规定用于替换的内容,可以是字符串、正则相关的特殊值和函数。

浏览器支持:

(1).IE浏览器支持此方法。

(2).edge浏览器支持此方法。

(3).火狐浏览器支持此方法。

(4).谷歌浏览器支持此方法。

(5).opera浏览器支持此方法。

(6).safria浏览器支持此方法。

实例代码:

[JavaScript] 纯文本查看 复制代码运行代码
let str="ant8zone";
let reg=/\d/;
console.log(str.replace(reg,"H"));

代码运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/02/134259o006uv09i570ze8v.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

首先正则表达式reg会在源字符串"ant8zone"进行匹配。

然后用"H"替换正则表达式匹配到的内容。

replacement可以是具有特殊意义的美元$符号:

$美元符号功能罗列如下:

(1).$1、$2、...、$99:分别对应正则表达式第一个到第九九个子表达式匹配的内容。

(2).$&:正则表达式匹配的字符串。

(3).$’:str字符串中匹配内容之后的内容。

(4).$`:str字符串中匹配内容之前的内容。

(5).$$:直接量符号,也就是$字符本身。

下面通过代码实例分别做一下演示:

[JavaScript] 纯文本查看 复制代码运行代码
let str="ant,zone"; 
let newStr=str.replace(/(\w+),(\w+)/,"$2 $1"); 
console.log(newStr);

代码运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/02/134423obq1swq5cjzq1qq7.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

$2是第二个子表达式匹配的字符串(zone),$1是第一个兹表示匹配的字符串(ant)。

[JavaScript] 纯文本查看 复制代码运行代码
let str="ant88"; 
let newStr=str.replace(/(\d+)/,"$1$&"); 
console.log(newStr);

代码运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/02/134529yqum9l59lp1qul2b.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

$1是第一个子表达式匹配的内容(88),$&是正则表达式匹配的内容(88)。

那么$1$&就是8888,用四个8替换字符中的两个8,结果自然是ant8888。

[JavaScript] 纯文本查看 复制代码运行代码
let str="ant88"; 
let newStr=str.replace(/(\d+)/,"$`"); 
console.log(newStr);

代码运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/02/135613q5nk12oxouxqo1zm.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

$`指代正则表达式匹配内容的左侧内容,本例中就是"88"左侧的内容"ant"。

于是用"ant"替代"88",最后得出结果"antant"。

[JavaScript] 纯文本查看 复制代码运行代码
let str="88ant"; 
let newStr=str.replace(/(\d+)/,"$'"); 
console.log(newStr);

代码运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/02/135920ab20qnqnzwtwqn67.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

$'指代正则表达式匹配内容的右侧内容,本例中就是"88"右侧的内容"ant"。

于是用"ant"替代"88",最后得出结果"antant"。

[JavaScript] 纯文本查看 复制代码运行代码
let str="ant88"; 
let newStr=str.replace(/(\d+)/,"$$"); 
console.log(newStr);

代码运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/02/134649h2x166f9hvfyff23.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

$$没有什么特别的,它就表示字符"$"。 

replacement参数也可以是函数:

考虑到文章的篇幅,replacement是函数的情况本文不再介绍。

具体参阅JavaScript replace()第二个参数为函数时的参数一章节。


鲜花

握手

雷人

路过

鸡蛋

最新评论

返回顶部