モジュールのレッスン (4/4)
Unicode プロパティのエスケープ
ASCII のクラス \w、\d、\s は、イタリア語、フランス語、ギリシャ語には不十分です
または絵文字テキスト。最新の JavaScript (u フラグ付き -- Unicode) が提供するもの
プロパティ エスケープ \p{...}: Unicode に基づくセマンティック クラス
キャラクターのプロパティ。
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 の違い
\\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) フラグが厳密に必要です。そうでない場合、エンジンは構文エラーをスローします。
試してみてください
アクセント付きの単語 (citta'、perche'、e' \u2026) を含むすべての単語を検索します。プロパティ エスケープ \\p{L} をフラグ u とともに使用します。
ヒントを表示
\\w+ を \\p{L}+ に置き換え、(g に加えて) u フラグを追加します。
3 回の試行後に解決策が利用可能になります
復習演習
文字と数字を除く、テキスト内のすべての Unicode 記号 (通貨、数学、絵文字) を検索します。
ヒントを表示
\\p{S} は Unicode のシンボル カテゴリに一致します。 u フラグを思い出してください。
3 回の試行後に解決策が利用可能になります
追加の課題
`\p{Script=Cyrillic}` を使用して、キリル文字で構成されるすべての単語を検索します。
ヒントを表示
\\p{Script=Cyrillic} を + 量指定子と u フラグとともに使用します。
3 回の試行後に解決策が利用可能になります