no versions found for ApplicationFrameworkReferences / Utility/Network/pattern_match / en

Pattern: match()

与えられた文字列または Pattern が対象の Pattern に一致するかどうか検査します。

構文

pattern.match(s) => boolean

引数

  • s: string | Pattern

    検査する文字列またはパターンです。

返値: boolean

一致する場合 true, 一致しない場合 false です。

それぞれの一致種別に対して、2つの文字列が一致するか検査した例です。

import { Pattern } from "/alier_sys/Pattern.js";

const exact    = new Pattern({ pattern: "/foo/bar/baz/qux" }),
      forward  = new Pattern({ pattern: "/foo/bar/baz/*" }),
      backward = new Pattern({ pattern: "*/bar/baz/qux" }),
      partial  = new Pattern({ pattern: "*/bar/baz/*" })
;

const s = "/foo/bar/baz/qux",
      t = "/foo/bar/baz/qux/nose/foobar"
;
//  完全一致のパターンとの比較
console.log(`kind: "${exact.kind}", pattern: "${exact.pattern}"; match("${s}") ==> ${exact.match(s)}`);
//           kind: "exact"        , pattern: "/foo/bar/baz/qux" ;
//           match("/foo/bar/baz/qux")             ==>  true
console.log(`kind: "${exact.kind}", pattern: "${exact.pattern}"; match("${t}") ==> ${exact.match(t)}`);
//           kind: "exact"        , pattern: "/foo/bar/baz/qux" ;
//           match("/foo/bar/baz/qux/nose/foobar") ==> false

//  前方一致のパターンとの比較
console.log(`kind: "${forward.kind}", pattern: "${forward.pattern}"; match("${s}") ==> ${forward.match(s)}`);
//           kind: "forward"        , pattern: "/foo/bar/baz/*"    ;
//           match("/foo/bar/baz/qux")             ==>  true
console.log(`kind: "${forward.kind}", pattern: "${forward.pattern}"; match("${t}") ==> ${forward.match(t)}`);
//           kind: "forward"        , pattern: "/foo/bar/baz/*"    ;
//           match("/foo/bar/baz/qux/nose/foobar") ==>  true

//  後方一致のパターンとの比較
console.log(`kind: "${backward.kind}", pattern: "${backward.pattern}"; matchAt("${s}") ==> ${backward.match(s)}`);
//           kind: "backward"        , pattern: "*/bar/baz/qux"      ;
//           match("/foo/bar/baz/qux")             ==>  true
console.log(`kind: "${backward.kind}", pattern: "${backward.pattern}"; matchAt("${t}") ==> ${backward.match(t)}`);
//           kind: "backward"        , pattern: "*/bar/baz/qux"      ;
//           match("/foo/bar/baz/qux/nose/foobar") ==> false

//  部分一致のパターンとの比較
console.log(`kind: "${partial.kind}", pattern: "${partial.pattern}"; match("${s}") ==> ${partial.match(s)}`);
//           kind: "partial"        , pattern: "*/bar/baz/*"       ;
//           match("/foo/bar/baz/qux")             ==>  true
console.log(`kind: "${partial.kind}", pattern: "${partial.pattern}"; matchAt("${t}") ==> ${partial.match(t)}`);
//           kind: "partial"        , pattern: "*/bar/baz/*"       ;
//           match("/foo/bar/baz/qux/nose/foobar") ==>  true

解説

Pattern に対しては Pattern.compare() の順序比較の結果が同値かどうかを判定します。

string に対しては Pattern::matchAt() を呼び出し、その結果が 0 以上かどうかで判定します。