限制XSD中的字符串,以便它们没有开头或结尾的空格,而仅包含字母数字,连字符和下划线吗?

时间:2019-01-27 06:25:04

标签: regex xml xsd

我正在尝试消除前导/后缀空格,并且还想确保我的字符串不包含特殊字符(“-”和“ _”除外,我需要这些字符)。在另一篇文章中,我提出了这个

<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@之类的字符串(字符串末尾只有一个特殊字符)被我的正则表达式捕获。我想念什么吗?

1 个答案:

答案 0 :(得分:1)

您的正则表达式匹配不受欢迎的字符串,因为\S匹配任何非空格字符。

您的[a-zA-Z0-9_-]字符类与空格不匹配,因此您可以完全省略\S模式并使用

<xs:pattern value="[a-zA-Z0-9_-]+"/>

请参见regex demo