XSD Regex Pattern Tester
XSD Regex Pattern
- Anchors ^ and $ are implicit (matches entire string)
- No flags support (always case-sensitive, no global)
- Standard syntax: character classes, quantifiers, groups all work
Test Strings (one per line)
技术详情
XSD 正则表达式测试器的工作原理
工具功能
XSD 正则表达式测试器专门测试 XML Schema(XSD)中使用的正则表达式模式。正则表达式的通用测试器不同,XSD 正则使用 XML Schema 规范定义的正则语法,与 PCRE、JavaScript RegExp 等主流正则引擎有显著差异。该工具帮助 XSD schema 设计者验证 pattern 约束的正确性。
常见开发者使用场景
XSD 正则测试主要用于 XSD schema 设计阶段:企业级 XML 数据验证中定义字段的格式约束(如邮政编码、电话号码、身份证号格式)、EDI 标准中规定 XML 业务数据的合法格式、政府采购平台中规范投标文件的 XML 格式、以及 Web Service 的 WSDL 接口定义中约束参数的输入格式。
XSD 正则验证后可配合 XML XSD 验证器 整体验证 XML 数据。XML 验证器 检查文档基础格式。XPath 测试器 可用于定位 pattern 约束的字段。正则表达式测试器 测试 JavaScript/PCRE 正则(与 XSD 正则不同)。
技术原理/相关概念
XSD 正则遵循 XML Schema 规范的附录 F 定义的正则表达式语法,是对 Unicode 正则表达式的子集和扩展。关键语法差异:使用 ^ 表示补集(而非行首)、$ 不用于行尾(使用 \z 表示字符串结尾)、支持字符类减法 [a-z-[aeiou]]、字符类表达式 \pIsBasicLatin 使用单字母类别名。与 PCRE 不同,XSD 正则默认匹配整个字符串(隐式全锚定),不需要 ^ 和 $ 锚定。
常见陷阱与注意事项
- 隐式全锚定:XSD 正则默认要求完整匹配整个字符串(相当于 PCRE 的 $ 锚定),而 JavaScript 正则默认只需部分匹配。这是最易出错的差异。
- 补集符号:XSD 中 ^ 表示字符类的补集(如 [^aeiou] = 非元音字母),而 PCRE 中的 ^ 表示行首。两者语义完全不同。
- 不支持环视:XSD 正则不支持前瞻((?=...))和后顾((?<=...)),需要依赖 XSD 1.1 的 assertion 功能替代。
- Unicode 支持:XSD 正则的 Unicode 类别名称可能与 Unicode 标准的最新版本有偏差,使用时应参考 XML Schema 规范中的定义。
何时使用此工具而非代码
在设计和测试 XSD schema 中的 pattern 约束时使用此工具。适合 XML Schema 设计者快速验证正则表达式在 XSD 语义下的行为。对于在代码中实现 XSD 正则验证,推荐使用 Xerces 解析器的 XML Schema 验证功能或 .NET 的 XmlSchemaValidator 类,它们直接内置 XSD 正则引擎。