欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS關(guān)于?replace?取值、替換第幾個匹配項問題小結(jié)

 更新時間:2023年05月24日 09:12:31   作者:橙子家  
這篇文章主要介紹了JS關(guān)于replace取值、替換第幾個匹配項,本文針對字符串的替換、截取知識點做詳細介紹,結(jié)合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下

在日常開發(fā)中,經(jīng)常遇到針對字符串的替換、截取,知識點比較碎容易混淆,特此總結(jié)一下,僅供參考。

一、替換第一個匹配項

字符串替換

let strtest = "0123測試replace456測試replace789測試replace0"
console.log("原字符串:" + strtest)
let outstr = strtest.replace("測試","ceshi")
console.log("輸出字符串:" + outstr)
// 原字符串:0123測試replace456測試replace789測試replace0
// 輸出字符串:0123ceshireplace456測試replace789測試replace0

正則表達式替換

當(dāng)直接在被替換字符串恰后加上 / 時,不添加修飾符,就等同于直接字符串替換。

let strtest = "0123測試replace456測試replace789測試replace0"
console.log("原字符串:" + strtest)
let outstr = strtest.replace(/測試/, "ceshi")
console.log("輸出字符串:" + outstr)
// 原字符串:0123測試replace456測試replace789測試replace0
// 輸出字符串:0123ceshireplace456測試replace789測試replace0

二、替換全部匹配項

字符串分組再聯(lián)合

let strtest = '0123測試replace456測試replace789測試replace0';
console.log("原字符串:" + strtest)
let arrstr = strtest.split("測試");
let outstr = arrstr.join("ceshi");
console.log("輸出字符串:" + outstr)
// 原字符串:0123測試replace456測試replace789測試replace0
// 輸出字符串:0123ceshireplace456ceshireplace789ceshireplace0

正則表達式替換

格式:/待替換的字符串/g、/待替換的字符串/mgi。

  g:執(zhí)行全局匹配,替換全部匹配項;

  i:不區(qū)分大小寫;

  m:多行匹配。

gim 可所以組合使用。

let strtest = "0123測試replace456測試replace789測試replace0"
console.log("原字符串:" + strtest)
let outstr = strtest.replace(/測試/g, "ceshi")
// 另一種寫法:
// let reg = new RegExp("測試", "g")
// let outstr = strtest.replace(reg, "ceshi")
console.log("輸出字符串:" + outstr)
// 原字符串:0123測試replace456測試replace789測試replace0
// 輸出字符串:0123ceshireplace456ceshireplace789ceshireplace0

三、替換第 n 個匹配項

下邊以第二個為例。

字符串分組再聯(lián)合

思路:先通過被替換項分組,再根據(jù)目標(biāo)位數(shù)把整個分組分為兩個部分,在通過替換字符串聯(lián)合。

let num = 2 // 定義替換第二個匹配項
let strtest = '0123測試replace456測試replace789測試replace0';
console.log("原字符串:" + strtest)
let arrstr = strtest.split("測試");
if(arrstr.length < num)
    return
let arrstr1=[],arrstr2=[]
for(let ii=0;ii<arrstr.length;ii++){
    if(ii < num)
        arrstr1.push(arrstr[ii])
    else
        arrstr2.push(arrstr[ii])
}
let outstr = arrstr1.join("測試")+"ceshi"+arrstr2.join("測試");
console.log("輸出字符串:" + outstr)
// 原字符串:0123測試replace456測試replace789測試replace0
// (index):59 輸出字符串:0123測試replace456ceshireplace789測試replace0

正則表達式實現(xiàn)

將第一個匹配項跳過,并把第二個匹配項之前的內(nèi)容標(biāo)識為變量。

let strtest = '0123測試replace456測試replace789測試replace0';
console.log("原字符串:" + strtest)
let outstr = strtest.replace(/((?:.*?測試.*?){1}.*?)測試/m, "$1-ceshi-")
// ?: 表示:其后邊的 pattern 匹配但不獲取。匹配項被標(biāo)識為 $1,后續(xù)會引用
// .*? 表示:.* 除 '/n' 之外的任意個任意字符
// {1} 表示:其前邊的 pattern 出現(xiàn)一次
// /pattern/m 表示: m 全局查詢
console.log("輸出字符串:" + outstr)
// 原字符串:0123測試replace456測試replace789測試replace0
// 輸出字符串:0123測試replace456測試replace789-ceshi-replace0

參考:https://stackoverflow.com/questions/42943096/replace-nth-match-of-matches-with-regex

四、替換指定標(biāo)記之間的內(nèi)容

字符串分組再聯(lián)合

let strtest = '0123<Object>replace456測試replace78</Object>9測試replace0';
let startstr = "<Object>"
let endstr = "</Object>"
if (strtest.indexOf(startstr) > strtest.indexOf(endstr))
    return
console.log("原字符串:" + strtest)
let arr = strtest.split(startstr)
let arr2 = arr[1].split(endstr)
let resultstr = arr2[0]
let outstr = startstr + resultstr + endstr
console.log("輸出字符串:" + outstr)
// 原字符串:0123<Object>replace456測試replace78</Object>9測試replace0
// 輸出字符串:<Object>replace456測試replace78</Object>
let strtest = '0123<Object>replace456測試replace78</Object>9測試replace0';
let startstr = "<Object>"
let endstr = "</Object>"
if (strtest.indexOf(startstr) > strtest.indexOf(endstr))
    return
console.log("原字符串:" + strtest)
let arr = strtest.split(startstr)
let arr2 = arr[1].split(endstr)
let resultstr = arr2[0]
let outstr = startstr + resultstr + endstr
console.log("輸出字符串:" + outstr)
// 原字符串:0123<Object>replace456測試replace78</Object>9測試replace0
// 輸出字符串:<Object>replace456測試replace78</Object>

正則表達式方法 replace()、match()、exec()

替換為指定字符串:( replace() )

let strtest = '0123<Object>replace456測試replace78</Object>9測試replace0';
console.log("原字符串:" + strtest)
let outstr = strtest.replace(/<Object>(.*?)<\/Object>/m, "-ceshi-") // \ 為轉(zhuǎn)義字符
console.log("輸出字符串:" + outstr)
// 原字符串:0123<Object>replace456測試replace78</Object>9測試replace0
// 輸出字符串:0123-ceshi-9測試replace0

取出帶標(biāo)記字符串的內(nèi)容:( match() )

let strtest = '0123<Object>replace456測試replace78</Object>9測試replace0';
console.log("原字符串:" + strtest)
let outstr = strtest.match(/<Object>(.*?)<\/Object>/m)
console.log("輸出字符串:" + outstr)
// 原字符串:0123<Object>replace456測試replace78</Object>9測試replace0
// 輸出字符串:<Object>replace456測試replace78</Object>

當(dāng)可能有多個匹配項時:( exec() )

let strtest = "這是<Object>要提取的內(nèi)容</Object>,還有<Object>另一個內(nèi)容</Object>"
console.log("原字符串:" + strtest)
let regex = /<Object>(.*?)<\/Object>/gm
const matches = []
let match
while ((match = regex.exec(strtest)) !== null) {
    matches.push(match[1])
    console.log(match)
}
console.log("輸出全部匹配項:", matches)
// 原字符串:這是<Object>要提取的內(nèi)容</Object>,還有<Object>另一個內(nèi)容</Object>
// (2)?["<Object>要提取的內(nèi)容</Object>", "要提取的內(nèi)容", index: 2, input: "這是<Object>要提取的內(nèi)容</Object>,還有<Object>另一個內(nèi)容</Object>", groups: undefined]
// (2)?["<Object>另一個內(nèi)容</Object>", "另一個內(nèi)容", index: 28, input: "這是<Object>要提取的內(nèi)容</Object>,還有<Object>另一個內(nèi)容</Object>", groups: undefined]
// 輸出全部匹配項: (2)?["要提取的內(nèi)容", "另一個內(nèi)容"]

到此這篇關(guān)于JS關(guān)于 replace 取值、替換第幾個匹配項的文章就介紹到這了,更多相關(guān)js replace 取值、替換第幾個匹配項內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JavaScript實現(xiàn)同步于本地時間的動態(tài)時間顯示方法

    JavaScript實現(xiàn)同步于本地時間的動態(tài)時間顯示方法

    這篇文章主要介紹了JavaScript實現(xiàn)同步于本地時間的動態(tài)時間顯示方法,實例分析了javascript獲取本地時間及動態(tài)顯示的技巧,并對實現(xiàn)代碼進行了較為詳盡的分析說明,需要的朋友可以參考下
    2015-02-02
  • Js實現(xiàn)無刷新刪除內(nèi)容

    Js實現(xiàn)無刷新刪除內(nèi)容

    本文給大家分享的是一段仿騰訊微博的無刷新刪除特效的代碼,非常的實用,有需要的小伙伴可以參考下。
    2015-04-04
  • JavaScript隨機數(shù)生成各種技巧及實例代碼

    JavaScript隨機數(shù)生成各種技巧及實例代碼

    這篇文章主要介紹了JavaScript隨機數(shù)生成各種技巧及實例代碼,包括生成0到1之間的隨機浮點數(shù)、指定范圍的隨機整數(shù)和浮點數(shù)、從數(shù)組中隨機選擇元素、生成隨機顏色以及生成指定數(shù)目和范圍的隨機數(shù),文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-04-04
  • 學(xué)習(xí)JavaScript正則表達式

    學(xué)習(xí)JavaScript正則表達式

    這篇文章主要介紹了JavaScript正則表達式,詳細深入的了解JavaScript正則表達式,從而更熟練掌握JavaScript正則表達式,感興趣的小伙伴們可以參考一下
    2015-11-11
  • vue使用vue-quill-editor富文本編輯器且將圖片上傳到服務(wù)器的功能

    vue使用vue-quill-editor富文本編輯器且將圖片上傳到服務(wù)器的功能

    這篇文章主要介紹了vue使用vue-quill-editor富文本編輯器且將圖片上傳到服務(wù)器的功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • js實現(xiàn)圖片上傳到服務(wù)器和回顯

    js實現(xiàn)圖片上傳到服務(wù)器和回顯

    這篇文章主要介紹了js實現(xiàn)圖片上傳到服務(wù)器和回顯,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • 完美實現(xiàn)js焦點輪播效果(二)(圖片可滾動)

    完美實現(xiàn)js焦點輪播效果(二)(圖片可滾動)

    這篇文章主要為大家詳細介紹了完美實現(xiàn)js焦點輪播效果的相關(guān)代碼,采用輔助圖片實現(xiàn)圖片無限滾動,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • JS平滑無縫滾動效果的實現(xiàn)代碼

    JS平滑無縫滾動效果的實現(xiàn)代碼

    下面小編就為大家?guī)硪黄狫S平滑無縫滾動效果的實現(xiàn)代碼。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考
    2016-05-05
  • js實現(xiàn)刷新iframe的方法匯總

    js實現(xiàn)刷新iframe的方法匯總

    這里給大家匯總了一些js實現(xiàn)刷新iframe框架的方法,非常的簡單實用,有需要的小伙伴可以參考下。
    2015-04-04
  • vue iView 上傳組件之手動上傳功能

    vue iView 上傳組件之手動上傳功能

    iView 主要服務(wù)于 PC 界面的中后臺業(yè)務(wù),是一套高質(zhì)量的開源 UI 組件庫。這篇文章主要介紹了iView 上傳組件之手動上傳功能,需要的朋友可以參考下
    2018-03-03

最新評論