限制 XSD 中的字符串,使它们没有前导或尾随空格,并且只包含字母数字、连字符和下划线?

Posted

技术标签:

【中文标题】限制 XSD 中的字符串,使它们没有前导或尾随空格,并且只包含字母数字、连字符和下划线?【英文标题】:Restrict strings in XSD so they don't have leading or trailing whitespace and only contain alphanumerics, hyphen and an underscore? 【发布时间】:2019-01-27 06:25:03 【问题描述】:

我正在尝试消除前导/尾随空格,并且还想确保我的字符串不包含特殊字符(“-”和“_”除外,我需要这些)。从其他帖子中我能够想出这个

<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@(只有一个特殊字符结束字符串)没有被我的正则表达式捕获。我错过了什么吗?

【问题讨论】:

我提出上述方案的参考:***.com/questions/35815521/… 您希望在字符串中允许哪些字符作为前导/尾随? 你只需要[a-zA-Z0-9_-]+ @PushpeshKumarRajwanshi 它只是我想在字符串的前导/尾随位置避免的空白/空格,显然没有特殊字符。 @pj0129:你想在文本中间允许空格吗?如果没有,那么 Wiktor 的回答对你来说应该足够好了。 【参考方案1】:

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

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

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

请参阅regex demo。

【讨论】:

是的 Wiktor,现在这一切都说得通了,我自己在我的模式中的第一个 \S 中允许它。感谢您的解决方案的帮助。

以上是关于限制 XSD 中的字符串,使它们没有前导或尾随空格,并且只包含字母数字、连字符和下划线?的主要内容,如果未能解决你的问题,请参考以下文章

如何删除前导和尾随的空格以及字符串中的多个空格? [复制]

从 Java 字符串中去除前导和尾随空格

在C语言编程中啥叫前导空格,啥叫尾随空格

如何以标准方式修剪前导/尾随空格?

iOS 自动布局更改前导和尾随空格

如何删除前导和尾随空格?