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 正則表達式在幾個重要方面不同:預設會匹配整個字串(隱含 ^ 與 $ 錨點)、不支援前瞻/後顧(lookahead/lookbehind)斷言,且具有用於 XML 驗證的特定語法規則。此工具會將 XSD 模式轉換為與 JavaScript 相容的正則表達式以便測試,同時說明其中差異。對於需要測試 XSD 檔案中所定義的模式限制、並從事 XML 結構描述、XSD 驗證與 XML 資料處理的開發者而言,這個工具非常實用。
常見的開發者使用情境
當開發者處理包含正則限制的 XML Schema 定義時,會使用 XSD 模式測試器。XSD 模式常用於驗證 XML 元素內容,例如電子郵件地址、日期、ID 或自訂格式。在定義 XSD 結構描述時,開發者需要測試其模式限制,以確保能正確驗證預期輸入並拒絕無效資料。此工具可協助驗證像 [A-Z][0-9] 這樣的模式是否能正確匹配如「AB123」的格式,同時拒絕「ab123」或「ABC123」。XSD 模式測試器對於 XML 結構描述開發、資料驗證,以及確保符合 XML 標準而言不可或缺。
與 JavaScript 正則表達式的主要差異
XSD 正則表達式模式與 JavaScript 正則表達式有幾個重要差異。首先,XSD 模式預設會匹配整個字串,因此不需要加入 ^ 和 $ 錨點。模式 [A-Z] 會自動只匹配「剛好是兩個大寫字母」的字串。其次,XSD 不支援前瞻((?=...))或後顧((?<=...))斷言。第三,XSD 支援 Unicode 類別,例如用於字母的 \p{L} 與用於數字的 \p{N},在 JavaScript 中需要 Unicode 旗標才能使用。XSD 也有像 \i 與 \c 這類用於 XML 名稱字元的特殊序列,JavaScript 正則表達式中並不存在。
XSD 模式範例
常見的 XSD 模式包含日期格式(例如用於 YYYY-MM-DD 的 \d{4}-\d{2}-\d{2})、識別碼模式(例如兩個字母後接三個數字的 [A-Z][0-9]),以及 Unicode 模式(例如一個或多個 Unicode 字母的 \p{L}+)。此工具會顯示這些模式如何轉換為 JavaScript 正則表達式,以及測試字串是否匹配整個模式(完整匹配)或僅部分匹配(部分匹配)。由於 XSD 模式必須匹配整個字串,部分匹配表示該模式無法完整驗證輸入。
最佳實務
測試 XSD 模式時,請記得它們驗證的是整個字串,而不是子字串。像 \d+ 這樣的模式只會匹配「完全由數字組成」的字串,而不會匹配「包含數字」的字串。請適當使用字元類別與量詞:[A-Za-z]+ 匹配一個或多個字母,而 [A-Za-z]* 匹配零個或多個字母。進行 XML 驗證時,請同時測試有效與無效輸入,以確保你的模式能正確接受預期資料並拒絕格式不正確的輸入。此工具會顯示轉換後的 JavaScript 正則表達式模式,讓你能看見 XSD 模式為測試目的如何被翻譯。