regex - 限制 XSD 中的字符串,使它们没有前导或尾随空格,并且只包含字母数字、连字符和下划线?
问题描述
我正在尝试消除前导/尾随空格,并且还想确保我的字符串不包含特殊字符(“-”和“_”除外,我需要这些)。从另一篇文章中,我能够想出这个
<xs:simpleType name="RandomString">
<xs:restriction base="xs:string">
<xs:pattern value="\S([a-zA-Z0-9_-]*\S)?"/>
</xs:restriction>
</xs:simpleType>
到目前为止,我能够想出一种方法来不允许前导、尾随空格和多个特殊字符。但是,我有这种独特的情况,它允许任何一个特殊字符出现在字符串的末尾
即,根据正则表达式,不允许使用类似abcdef1234!@#
和的字符串,但我的正则表达式没有捕捉到类似或(只有一个特殊字符结束字符串)之类的字符串。我错过了什么吗?abc123!xyz
abc123!
random234@
解决方案
您的正则表达式匹配不受欢迎的字符串,因为\S
匹配任何非空白字符。
您的[a-zA-Z0-9_-]
字符类与空格不匹配,因此您可以\S
完全省略模式并使用
<xs:pattern value="[a-zA-Z0-9_-]+"/>
请参阅正则表达式演示。
推荐阅读
- c# - 在 WPF 中按日期和列表索引自动排序 DataGrid
- python - 计算 3D 阵列的最小方向
- c# - 我在 ASP 格式化时遇到问题
- javascript - 如何在 React 中将数据从 Form 传递到 mapDispatchToProps
- c# - InvalidCastException:无法将“System.Guid”类型的对象转换为“System.String”类型。在 asp.net 核心 webapi 中
- python - matplotlib 中的径向热图
- c - 从没有 FPO 的定点整数重建 IEEE754 浮点二进制
- python - pyTelegramBot 装饰器未检测到更新
- python - 我们如何在使用 python 的滚动平均期间拒绝包含异常值的窗口?
- algorithm - Gnome 排序的优缺点是什么