我正在尝试消除前导/后缀空格,并且还想确保我的字符串不包含特殊字符(“-”和“ _”除外,我需要这些字符)。在另一篇文章中,我提出了这个
<xs:simpleType name="RandomString">
<xs:restriction base="xs:string">
<xs:pattern value="\S([a-zA-Z0-9_-]*\S)?"/>
</xs:restriction>
</xs:simpleType>
到目前为止,我已经找到了一种不允许使用前导,尾随空格和多个特殊字符的方法。但是,在这种特殊情况下,它允许在字符串结尾处使用任何一个特殊字符
ie根据正则表达式不允许使用abcdef1234!@#
和abc123!xyz
之类的字符串,但不允许使用abc123!
或random234@
之类的字符串(字符串末尾只有一个特殊字符)被我的正则表达式捕获。我想念什么吗?
答案 0 :(得分:1)
您的正则表达式匹配不受欢迎的字符串,因为\S
匹配任何非空格字符。
您的[a-zA-Z0-9_-]
字符类与空格不匹配,因此您可以完全省略\S
模式并使用
<xs:pattern value="[a-zA-Z0-9_-]+"/>
请参见regex demo。