XSD 正規表現パターンテスター
XSDパターン
変換後のパターン
^[A-Z]{2}[0-9]{3}$テスト文字列
結果
AB123XSD 正規表現の構文リファレンス
文字クラス
| . | Any character |
| [abc] | Match a, b, or c |
| [^abc] | Match anything except a, b, c |
| [a-z] | Character range (a to z) |
| \d | Digit (0-9) |
| \D | Non-digit |
| \s | Whitespace |
| \S | Non-whitespace |
| \p{L} | Unicode letter category(\p{L} (with 'u' flag)) |
| \p{N} | Unicode number category(\p{N} (with 'u' flag)) |
| \i | XML initial name character (XSD only, supported by xspattern) |
| \c | XML name character (XSD only, supported by xspattern) |
| [a-z-[aeiou]] | Character class subtraction (XSD only, supported by xspattern) |
量指定子
| a* | 0 or more |
| a+ | 1 or more |
| a? | 0 or 1 (optional) |
| a{n} | Exactly n times |
| a{n,} | n or more times |
| a{n,m} | Between n and m times |
| a*? | 0 or more (non-greedy) |
| a+? | 1 or more (non-greedy) |
グループ
| (abc) | Capturing group |
| (?:abc) | Non-capturing group |
| a|b | Match a or b |
エスケープ文字
| \t | Tab |
| \n | Newline |
| \r | Carriage return |
| \xhh | Hex character |
| \uhhhh | Unicode character |
JavaScript との重要な違い
| No anchors | XSD patterns match entire string by default (implicit ^ and $). xspattern handles this correctly. |
| No lookahead/lookbehind | XSD does not support (?=...), (?!...), (?<=...), (?<!...) |
| Unicode categories | XSD supports \p{L}, \p{N}, etc. xspattern supports Unicode 15.0. |
| XML name chars | XSD has \i and \c for XML name characters. xspattern supports these. |
| Character class subtraction | XSD supports [a-z-[aeiou]] syntax. xspattern fully supports this feature. |
技術的な詳細
XSD正規表現パターンテスターの仕組み
このツールでできること
XSD正規表現パターンテスターは、XML Schema Definition(XSD)の正規表現パターンをサンプルテキストに対してテストできるツールです。XSDの正規表現パターンはJavaScriptの正規表現といくつか重要な点で異なります。既定で文字列全体にマッチします(暗黙の^と$アンカー)、先読み/後読みアサーションをサポートしません、そしてXML検証向けの特有の構文ルールがあります。このツールは、差異を説明しながらXSDパターンをテスト用にJavaScript互換の正規表現へ変換します。XSDファイルで定義されたパターン制約をテストする必要がある、XMLスキーマ、XSD検証、XMLデータ処理に携わる開発者に役立ちます。
開発者によくある利用シーン
開発者は、正規表現制約を含むXML Schema定義を扱う際にXSDパターンテスターを使用します。XSDパターンは、メールアドレス、日付、ID、またはカスタム形式など、XML要素の内容を検証するためによく使われます。XSDスキーマを定義する際、開発者はパターン制約が期待する入力を正しく検証し、無効なデータを拒否できることを確認するためにテストする必要があります。このツールは、[A-Z][0-9]のようなパターンが"AB123"のような形式に正しくマッチし、"ab123"や"ABC123"を拒否することを検証するのに役立ちます。XSDパターンテスターは、XMLスキーマ開発、データ検証、そしてXML標準への準拠を確保するうえで不可欠です。
JavaScript正規表現との主な違い
XSD正規表現パターンには、JavaScript正規表現と比べていくつか重要な違いがあります。まず、XSDパターンは既定で文字列全体にマッチするため、^や$のアンカーを追加する必要がありません。[A-Z]というパターンは、自動的に「ちょうど2文字の大文字」からなる文字列にのみマッチします。次に、XSDは先読み((?=...))や後読み((?<=...))アサーションをサポートしません。さらに、XSDは文字用の\p{L}や数値用の\p{N}のようなUnicodeカテゴリをサポートしますが、これはJavaScriptではUnicodeフラグが必要です。XSDには、JavaScript正規表現にはないXML名文字向けの特別なシーケンス\iや\cもあります。
XSDパターンの例
一般的なXSDパターンには、YYYY-MM-DDの日付形式向けの\d{4}-\d{2}-\d{2}、2文字の英大文字に続いて3桁の数字という識別子向けの[A-Z][0-9]、1文字以上のUnicode文字向けの\p{L}+などがあります。このツールは、これらのパターンがJavaScript正規表現にどのように変換されるか、そしてテスト文字列がパターン全体に一致するか(完全一致)または一部だけ一致するか(部分一致)を表示します。XSDパターンは文字列全体に一致する必要があるため、部分一致はパターンが入力を完全には検証できていないことを示します。
ベストプラクティス
XSDパターンをテストする際は、部分文字列ではなく文字列全体を検証する点を覚えておいてください。\d+のようなパターンは、数字だけで構成された文字列にのみマッチし、数字を含む文字列にはマッチしません。文字クラスと量指定子を適切に使い分けましょう。[A-Za-z]+は1文字以上の英字にマッチし、[A-Za-z]*は0文字以上の英字にマッチします。XML検証では、正しいデータを受け入れつつ不正な入力を拒否できることを確認するために、有効な入力と無効な入力の両方をテストしてください。このツールは変換後のJavaScript正規表現パターンを表示するため、XSDパターンがテスト目的でどのように翻訳されるかを確認できます。