TypeScript 中的正規表示式

Shuvayan Ghosh Dastidar 2023年1月30日
  1. 在 TypeScript 中使用正規表示式
  2. 在 TypeScript 中使用 test 方法檢查目標字串中是否存在模式
  3. 在 TypeScript 中使用 RegExp 的字串 matchexec 方法在目標字串中查詢匹配項
  4. 在 TypeScript 中的 RegExp 文字表示式中使用標誌
TypeScript 中的正規表示式

RegExp 是正規表示式,用於使用 TypeScript 匹配目標字串中的一組固定字元。

RegExp 物件有許多屬性和方法。模式匹配時,每個屬性都有不同的選項。

在 TypeScript 中使用正規表示式

Regex 可以通過兩種方式在 TypeScript 中實現。其中之一是分配正規表示式文字型別 RegExp

const rExp : RegExp = /[A-C]/g;

另一種表達正規表示式的方法是通過 RegExp 建構函式。

const rExp : RegExp = new RegExp("[A-C]", "g");

對於本教程的其餘部分,將使用常量正規表示式來匹配測試字串。

在 TypeScript 中使用 test 方法檢查目標字串中是否存在模式

RegExp 的測試方法可用於通過返回 boolean 變數來檢查目標字串中是否存在特定模式或正規表示式。

const targetString : string = "All is well";
// regex to check if 'All' word is present or not.
const rExp : RegExp = /All/;
console.log(rExp.test(targetString));

輸出:

true

在 TypeScript 中使用 RegExp 的字串 matchexec 方法在目標字串中查詢匹配項

字串中的 match 方法或 RegExpexec 方法可以找到目標字串中與正規表示式對應的匹配項。

這兩種方法在查詢目標字串中的第一個匹配項時行為相似。

const targetString : string = "All is well";
const rExp : RegExp = /All/;
console.log(rExp.exec(targetString));
console.log(targetString.match(rExp))

輸出:

["All"]
["All"]

這些函式在查詢匹配字串的所有情況或使用全域性標誌集進行搜尋方面有所不同。

const targetString : string = "All is well and Beautiful";
const rExp : RegExp = /[A-C]/g;
console.log(rExp.exec(targetString));
console.log(targetString.match(rExp))

輸出:

["A"]
["A", "B"]

但是,exec 函式也可以找到正規表示式對應的目標字串中的匹配總數。

function getMatches( target : string, rExp : RegExp, matches : Array<RegExpExecArray> = []) {
    const matchIfAny  = rExp.exec(target);
    matchIfAny && matches.push(matchIfAny) && getMatches(target, rExp, matches);
    return matches;
}

const rExp : RegExp = /[A-C]/g

const test_string : string = "All is Well and Beautiful";

console.log(getMatches(test_string, rExp, []).map( arr => arr[0]));

輸出:

["A", "B"]

在 TypeScript 中的 RegExp 文字表示式中使用標誌

正規表示式中的一些常見標誌包括忽略案例標誌 i、全域性標誌 g 和多行標誌 m

以下程式碼段演示瞭如何使用 im 標誌。

const targetString : string = `#1 First line
#2 Second Line
#3 Third liNe`;
// regex to check  word is present or not.
const rExp1 : RegExp = /line/g;
const rExp2 : RegExp = /line/gi;
const rExp3 : RegExp = /^#\d/gi;
const rExp4 : RegExp = /^#\d/gim;
console.log(targetString.match(rExp1));
console.log(targetString.match(rExp2));
console.log(targetString.match(rExp3));
console.log(targetString.match(rExp4));

輸出:

["line"]
["line", "Line", "liNe"]
["#1"]
["#1", "#2", "#3"]

因此,i 標誌捕獲了所有出現的 line,無論大小寫如何。

m 標誌通常可用於在行的開頭和結尾查詢模式。

在這個例子中,設定了 m 標誌,可以找到所有在行首以數字開頭的匹配項。

Shuvayan Ghosh Dastidar avatar Shuvayan Ghosh Dastidar avatar

Shuvayan is a professional software developer with an avid interest in all kinds of technology and programming languages. He loves all kinds of problem solving and writing about his experiences.

LinkedIn Website