如何定义带字符数量范围限制的XSD pattern校验规则
问题根因
你的代码失效的核心原因是正则量词范围的分隔符语法错误。XSD的pattern校验规则遵循XML Schema正则表达式规范,字符出现次数的范围限定必须使用英文逗号分隔上下限,而非你使用的短横线-,你写的{1-20}属于非法语法,因此规则无法正常生效。
同时需要注意:XSD的pattern默认是隐式锚定整串匹配的,不需要额外添加^、$这类首尾定位标记,添加反而可能导致匹配异常。
正确实现代码
<xsd:simpleType name="NameType"> <xsd:restriction base="xsd:string"> <xsd:pattern value="[A-Z][a-z]{1,20}"/> </xsd:restriction> </xsd:simpleType>
上述规则完全符合你的需求:首字符为1个大写英文字母,后续跟随1~20个小写英文字母。
- 合法输入示例:
Zhang、Smith、Aaaaaaaaaaaaaaaaaaaaa(1个大写+20个小写) - 非法输入示例:
li(首字母小写)、L(无后续小写字母)、Liiiiiiiiiiiiiiiiiiiii(后续小写字母超过20个)
内容的提问来源于stack exchange,提问作者czarniecki
相关产品推荐
相关产品推荐

