首頁 > web前端 > js教程 > 主體

Javascript中replace()方法的使用實例

黄舟
發布: 2017-11-23 09:38:27
原創
1593 人瀏覽過

在我們日常開發中、在javascript中replace的方法是屬於String物件的,可用來替換字串、replace也可以在正規表示式中使用,那麼我們今天我們就來詳細探討Javascript中replace()方法的使用實例!

關於定義

  replace() 方法用於在字串中用一些字元替換另一些字符,或替換一個與正規表示式匹配的子字串。

關於語法##​​#

stringObject.replace(regexp/substr,replacement)
登入後複製

關於參數

參數描述

#regexp/substr

##必要。規定子字串或要替換的模式的 RegExp 物件。

請注意,如果該值是一個字串,則將它作為要檢索的直接量文字模式,而不是先轉換為 RegExp 物件。

replacement必要。一個字串值。規定了替換文字或產生替換文字的函數。





1、第一個參數regexp/substr,使用正規表示式時用全域標識符g,可以替換所有符合的子字串,否則只會匹配一次。

    例如:

var str = "aaaaa"; 
var str1 = str.replace("a", "b");
var str2 = str.replace(/a/g, "b");
登入後複製
  運行結果: str1 -> "baaaa",str2 -> "bbbbb"2、第二個參數replacement,可以是字元字串或function,也可以是$字元具有的特定的意義。 字元#$1、$2、...、$99$&$`$'$$
取代文字
與regexp 中的第1 到第99 個子表達式相符的文字。
與 regexp 相符的子字串。
位於符合子字串左側的文字。
位於符合子字串右邊的文字。
直接量符號。 ############






a. function的例子:

var str = "111222aa";
str.replace(/(\d{3})/g, function(word){
 return "b";
});
登入後複製

运行结果: "bbaa"

b. $的例子

var str = "1234567890";
str.replace( /(\d{3})(\d{3})(\d{4})/g, "$1-$2-$3" );
登入後複製

运行结果: "123-456-7890"

注: 大多时候是利用regexp和$的结合来实现需求,所以知道一些基本的正则表达式规则是有必要的。

字符串替换字符串

'I am loser!'.replace('loser','hero')
登入後複製

//I am hero!
直接使用字符串能让自己从loser变成hero,但是如果有2个loser就不能一起变成hero了。

'I am loser,You are loser'.replace('loser','hero');
//I am hero,You are loser
登入後複製

正则表达式替换为字符串

'I am loser,You are loser'.replace(/loser/g,'hero')
//I am hero,You are hero
登入後複製

使用正则表达式,并将正则的global属性改为true则可以让所有loser都变为hero

有趣的替换字符

replaceValue可以是字符串。如果字符串中有几个特定字符的话,会被转换为特定字符串。

字符 替换文本
$& 与正则相匹配的字符串
$` 匹配字符串左边的字符
$' 匹配字符串右边的字符
$1,$2,$,3,…,$n 匹配结果中对应的分组匹配结果
使用$&字符给匹配字符加大括号

var sStr='讨论一下正则表达式中的replace的用法';
sStr.replace(/正则表达式/,'{$&}');
//讨论一下{正则表达式}中的replace的用法
使用$`和$'字符替换内容

'abc'.replace(/b/,"$`");
//aac
'abc'.replace(/b/,"$'");
//acc
登入後複製

使用分组匹配组合新的字符串

'nimojs@126.com'.replace(/(.+)(@)(.*)/,"$2$1")
//@nimojs
replaceValue参数可以是一个函数
登入後複製

StringObject.replace(searchValue,replaceValue)中的replaceValue可以是一个函数.
如果replaceValue是一个函数的话那么,这个函数的arguments会有n+3个参数(n为正则匹配到的次数)

先看例子帮助理解:

function logArguments(){ 
 console.log(arguments);
//["nimojs@126.com", "nimojs", "@", "126.com", 0, "nimojs@126.com"] 
 return '返回值会替换掉匹配到的目标'
}
console.log(
 'nimojs@126.com'.replace(/(.+)(@)(.*)/,logArguments)
)
登入後複製

参数分别为

匹配到的字符串(此例为nimojs@126.com,推荐修改上面代码的正则来查看匹配到的字符帮助理解)
如果正则使用了分组匹配就为多个否则无此参数。(此例的参数就分别为”nimojs”, “@”, “126.com”。推荐修改正则为/nimo/查看控制台中返回的arguments值)
匹配字符串的对应索引位置(此例为0)
原始字符串(此例为nimojs@126.com)
使用自定义函数将A-G字符串改为小写

'JAVASCRIPT'.replace(/[A-G]/g,function(){
 return arguments[0].toLowerCase();
})
//JaVaScRIPT
登入後複製

使用自定义函数做回调式替换将行内样式中的单引号删除

&#39;<span style="font-family:\&#39;微软雅黑\&#39;;">demo</span>&#39;.replace(/\&#39;[^&#39;]+\&#39;/g,function(){  
 var sResult=arguments[0];
 console.log(sResult);//&#39;微软雅黑&#39;
 sResult=sResult.replace(/\&#39;/g,&#39;&#39;);
 console.log(sResult);
//微软雅黑
 return sResult;
})
//<span style="font-family:微软雅黑;">demo</span>
登入後複製

总结:

相信小伙伴们通过对本文的学习和了解,对Javascript中replace()方法的使用有了进一步的了解,希望对你的工作有所帮助!

相关推荐:

JavaScript正则方法replace实现搜索关键字高亮显示

js中replace()赋值时的用法

js学习正则之replace的实例详解

以上是Javascript中replace()方法的使用實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!