值不是有效的XML正则表达式

时间:2018-11-27 23:22:32

标签: regex xml xsd

我是正则表达式的新手,正尝试验证xml。我不断收到以下错误:

  1. '^(?!\s+).{1,21}(?<!\s+)$'不是有效的XML正则表达式。

第一个?似乎是在造成错误

  1. '\d{1,2}\/\d{1,2}\/\d{2,4}(\s\d{1,2}\:\d{1,2}\:\d{1,2}\s(am|Am|AM|pm|Pm|PM))?'不是有效的XML正则表达式。

第一个/似乎是在创建错误

  1. '^\w([\w|\s|\:\-]{0,18}\w)?$'不是有效的XML正则表达式。

第一个:似乎是在创建错误

  1. 说明:对于类型'ReturnVersion',模式''^((V|v)?[1-9]|(N|n))$'的值'1'不是有效的。 起始位置:3:291

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

XML Schema中正则表达式的规则在XSD 1.0(或1.1)规范的附录中给出。与W3C XML Schema规范的其他部分不同,它们是合理可读的。此正则表达式方言不包含^$锚作为元字符(由于隐式锚定了模式构面,因此不需要它们,因此不需要它们),并且不包含任何构造以(?开头。

在第二个正则表达式中,XSD不允许转义不是元字符的字符,并且其中包括“ /”。

某些(所谓的)XML Schema处理器实际上并未尝试正确实现正则表达式规则。例如,Microsoft .NET处理器仅使用.NET regex方言。并非所有开发人员都意识到这一点,因此您可能会遇到无法移植到其他模式处理器的模式。