RegExp "$ 1", and replace all occurrences, and


Posted by tsungtingdu on 2021-08-29

RegExp.$1-$9

在 JavaScript 的 RegExp 物件當中,提供了 $1, $2, $3 ... $9 等九個靜態唯讀的屬性,可以用來表示 match 到的 subexpressions (用 () 所圈住的群組),譬如

const regexp = /(\d{2})\W(\d{2})\W(\d{4})/

來說,這裡就有三個 subexpressions

如果我們用實際的例子來看,就會發現 RegExp.$1 代表著配對到的第一個 subexpressions 的值,以此類推:

const value = "29/08/2021"
const result = value.match(regexp)

console.log(RegExp.$1)     // 29
console.log(RegExp.$2)     // 08
console.log(RegExp.$3)     // 2021

而這個好用的地方在於,當我們在使用 replace 的時候,可以像是操作參數的方式,操作配對到的字串,然後進一步利用。譬如以下面調換順序的例子:

const value = "29/08/2021"
const result = value.(regexp, "$2/$1/$3")

console.log(result)    // 08/29/2021

Replace all occurrences

如果要取代字串裡面所有某個出現的字串,譬如 bar

const str = 'foo bar foo bar foo bar'

有以下三種方法:

const a = str.replaceAll('bar', 'foo')
console.log(a)                         // foo foo foo foo foo foo

const b = str.split('bar').join('foo')
console.log(b)                         // foo foo foo foo foo foo

const c = str.replace(/bar/g, 'foo')
console.log(c)                         // foo foo foo foo foo foo

#javascript #regexp







Related Posts

【Day05】使用 VS Code 修改內容製作個人化網頁

【Day05】使用 VS Code 修改內容製作個人化網頁

ESM 模組 (ES6 Modules or JavaScript Modules)

ESM 模組 (ES6 Modules or JavaScript Modules)

MTR04_1108

MTR04_1108


Comments