You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XML Schema与.NET正则表达式行为不一致修正求助

兼容XML Schema与.NET的正则表达式改写方案

规则要求

必须严格遵守以下验证规则:

  • 仅允许使用字符:a-z、A-Z、0-9、/、-、?、:、(、)、.、,、‘、+、单个空格
  • 禁止项:
    • 字符串首尾出现空格或斜杠/
    • 字符串内出现连续空格(如 )
    • 字符串内出现双斜杠//
    • 字符串内包含任何&符号
    • 上述允许字符之外的其他字符

问题说明

原正则表达式在XML Schema验证中会禁止文本中的&,但.NET环境下允许,且未严格限制连续空格、双斜杠等规则。直接拼接^[^&]*$未成功,因未结合原有字符范围与格式限制,导致规则冲突。

最终正则表达式

XML Schema 环境(需适配XML特殊字符转义)

^[a-zA-Z0-9\-?:().,‘+]+(?:(?: [a-zA-Z0-9\-?:().,‘+\/]+)|(?:\/[a-zA-Z0-9\-?:().,‘+]+))*$

.NET 环境(直接使用)

^[a-zA-Z0-9\-?:().,‘+]+(?:(?: [a-zA-Z0-9\-?:().,‘+\/]+)|(?:\/[a-zA-Z0-9\-?:().,‘+]+))*$

正则解释

  • ^[a-zA-Z0-9\-?:().,‘+]+:匹配字符串开头,必须是1个及以上非空格、非/的允许字符,确保首尾合规
  • (?: ... )*:非捕获组,可重复零次或多次,包含两种合法分支:
    • (?: [a-zA-Z0-9\-?:().,‘+\/]+):单个空格后接允许字符(可含/),避免连续空格
    • (?:\/[a-zA-Z0-9\-?:().,‘+]+):单个/后接非/、非空格的允许字符,避免双斜杠
  • $:匹配字符串结尾,确保结尾为非空格、非/的合法字符

验证示例

无效案例(两种环境均不通过)

Dlhy & testovaci nazov
Dlhy&Testovaci nazov
Dlhy &Testovaci nazov
Dlhy& Testovaci nazov
Dlhy  Testovaci nazov

无效原因:前4个包含&符号,最后1个包含连续空格

有效案例(两种环境均通过)

Dlhy a: 'Testovaci, (nazov.) /? +

符合所有规则:无&、无连续空格、无双斜杠、首尾合规、仅使用允许字符

内容的提问来源于stack exchange,提问作者zdenok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 15:43:15