メインコンテンツにスキップ
モジュール 5 · レッスン 4 / 4コース内の 20/32~12 min
モジュールのレッスン (4/4)

Unicode プロパティのエスケープ

ASCII のクラス \w、\d、\s は、イタリア語、フランス語、ギリシャ語には不十分です または絵文字テキスト。最新の JavaScript (u フラグ付き -- Unicode) が提供するもの プロパティ エスケープ \p{...}: Unicode に基づくセマンティック クラス キャラクターのプロパティ。

Code
Pattern: \p{L}+        (with flag u)
Sample:  Ciao caffe' \u00fcber \u4e16\u754c
         ^^^^ ^^^^^^^ ^^^^ ^^^^

\p{L} = "任意の文字 (Unicode)": アクセント付き文字、中国語が含まれます 表意文字、キリル文字、ギリシャ語\u2026すべて。最も一般的なもの:

  • \p{L} -- 文字 (任意のアルファベット)。
  • \p{N} -- 数値 (アラビア数字、ローマ字、インド語\u2026)。
  • \p{P} -- 句読点。
  • \p{S} -- 記号 (数学、通貨、絵文字\u2026)。
  • \p{Z} -- スペース/区切り文字。
  • \p{Script=Latin} -- 特にラテン文字。
  • \p{Script=Greek} -- ギリシャ語のアルファベット。等々。

そして 否定 バージョン \P{L}、\P{N}、\u2026

\w と \d の違い

Code
\\w matches [A-Za-z0-9_]              -- ASCII only, no "caffe'"
\\p{L}\\p{N}_  with flag u            -- includes accented characters

イタリア語テキストの堅牢なパーサーの場合、\w よりも \p{L} を優先します: citta'、perche'、andro' は単語として正しく一致します。

Unicode プロパティとブラウザの互換性

\\p{L} (文字) や \\p{Script=Latin} などの Unicode プロパティは、クラスを国際アルファベットに拡張します。 JavaScript では、u (または v) フラグが厳密に必要です。そうでない場合、エンジンは構文エラーをスローします。

試してみてください

運動#regex.m5.l4.e1
試行回数: 0読み込み中…

アクセント付きの単語 (citta'、perche'、e' \u2026) を含むすべての単語を検索します。プロパティ エスケープ \\p{L} をフラグ u とともに使用します。

エディターを読み込み中…
ヒントを表示

\\w+ を \\p{L}+ に置き換え、(g に加えて) u フラグを追加します。

3 回の試行後に解決策が利用可能になります

復習演習

運動#regex.m5.l4.e2
試行回数: 0読み込み中…

文字と数字を除く、テキスト内のすべての Unicode 記号 (通貨、数学、絵文字) を検索します。

エディターを読み込み中…
ヒントを表示

\\p{S} は Unicode のシンボル カテゴリに一致します。 u フラグを思い出してください。

3 回の試行後に解決策が利用可能になります

追加の課題

運動#regex.m5.l4.e3
試行回数: 0読み込み中…

`\p{Script=Cyrillic}` を使用して、キリル文字で構成されるすべての単語を検索します。

エディターを読み込み中…
ヒントを表示

\\p{Script=Cyrillic} を + 量指定子と u フラグとともに使用します。

3 回の試行後に解決策が利用可能になります