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 兼容的正则以便测试,同时解释其中差异。它适用于从事 XML schema、XSD 验证与 XML 数据处理的开发者,用于测试在 XSD 文件中定义的模式约束。
常见开发者使用场景
当开发者处理包含正则约束的 XML Schema 定义时,会使用 XSD 模式测试器。XSD 模式常用于验证 XML 元素内容,例如电子邮件地址、日期、ID 或自定义格式。在定义 XSD schema 时,开发者需要测试其模式约束,确保它们既能正确验证预期输入,又能拒绝无效数据。该工具有助于验证诸如 [A-Z][0-9] 之类的模式是否能正确匹配如“AB123”这样的格式,同时拒绝“ab123”或“ABC123”。XSD 模式测试器对于 XML schema 开发、数据验证以及确保符合 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 模式在测试时是如何被翻译的。