DevToys Web Pro iconDevToys Web Pro博客
为我们评分:
试用浏览器扩展:

XSD 正则模式测试器

XSD 模式

XSD patterns match the entire string by default (implicit ^ and $). Using xspattern for accurate XSD regex matching.

转换后的模式

近似的 JavaScript 正则等价形式(仅用于显示)。实际匹配使用 xspattern 库以准确支持 XSD 正则。
^[A-Z]{2}[0-9]{3}$

测试字符串

  • 结果

    完全匹配
    整个字符串与模式匹配
    匹配到的文本:
    AB123

    XSD 正则语法参考

    字符类

    .Any character
    [abc]Match a, b, or c
    [^abc]Match anything except a, b, c
    [a-z]Character range (a to z)
    \dDigit (0-9)
    \DNon-digit
    \sWhitespace
    \SNon-whitespace
    \p{L}Unicode letter category(\p{L} (with 'u' flag))
    \p{N}Unicode number category(\p{N} (with 'u' flag))
    \iXML initial name character (XSD only, supported by xspattern)
    \cXML 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|bMatch a or b

    转义字符

    \tTab
    \nNewline
    \rCarriage return
    \xhhHex character
    \uhhhhUnicode character

    与 JavaScript 的重要差异

    No anchorsXSD patterns match entire string by default (implicit ^ and $). xspattern handles this correctly.
    No lookahead/lookbehindXSD does not support (?=...), (?!...), (?<=...), (?<!...)
    Unicode categoriesXSD supports \p{L}, \p{N}, etc. xspattern supports Unicode 15.0.
    XML name charsXSD has \i and \c for XML name characters. xspattern supports these.
    Character class subtractionXSD 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 不支持前瞻((?=...))或后顾((?&lt;=...))断言。第三,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 模式在测试时是如何被翻译的。