如何使用XSD限制字符串首尾空格且允许中间保留空格?
XSD pattern 首尾空格限制调整方案
现有规则问题
你当前使用的规则首尾匹配的字符组[A-Za-z0-9 _.,']包含空格,因此默认允许字符串首尾出现空格;同时XSD的pattern校验默认是全字符串匹配,不需要额外加^和$锚点。
调整后规则
<xs:pattern value="[A-Za-z0-9_.,']+([ ]+[A-Za-z0-9_.,']+)*"/>
规则逻辑说明
- 开头强制要求至少1个非空格的合法字符,合法字符范围和你原有配置一致:大小写字母、数字、下划线、英文句号、英文逗号、英文单引号
- 后续可重复的分组
([ ]+[A-Za-z0-9_.,']+)*逻辑为「1个或多个空格 + 至少1个非空格合法字符」,仅允许空格出现在两个非空格字符之间,天然禁止末尾出现空格 - 适配所有符合需求的场景:
- 无空格的短字符串,比如
STACKOVERFLOW - 中间带空格的字符串,比如你示例的
STACK OVER FLOW - 支持中间连续多个空格的场景,如果不需要连续空格,把
[ ]+改成[ ]即可
- 无空格的短字符串,比如
校验效果验证
- 合法用例全部通过:
SOMETEXT、TEXT WITH SPACE、123_TEST.abc,'123 - 非法用例全部拦截:
TEXT(开头空格)、TEXT(结尾空格)、TEXT WITH SPACE(首尾均有空格)
内容的提问来源于stack exchange,提问作者Jockey
相关产品推荐
相关产品推荐

