我试图做一些非常简单的事,但为什么这么难?我只是想禁止前导和尾随空格,并保持字符串中的其他所有内容(包括中间空格)
<xs:simpleType name="NonEmptyString">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:pattern value=".*[^\s].*"/> <!-- read my comments on sri's answer -->
</xs:restriction>
</xs:simpleType>
我真的非常难倒
这些正则表达式对我来说都不适用于我的XSD甚至是在线正则表达式测试人员(除了一些将在/ g在在线测试仪的单独框中使用但我无法弄清楚如何获得那要在XSD中工作)
我从这些页面尝试了所有这些,没有一个匹配:
答案 0 :(得分:1)
如果通过&#34;前导和尾随空格&#34;你的意思是字符串的第一个字符和最后一个字符(如果有的话)都不是空白(U + 0020),那么
[^ ](.*[^ ])?
应该没问题。如果还应允许空字符串,请将整个表达式设为可选:
([^ ](.*[^ ])?)?
第一个字符类[^ ]
匹配前导非空格。 .*
允许在该初始字符之后的任何字符序列,以另一个非空白字符结尾。由于没有前导或尾随空格的字符串集包括&#34; a&#34;和其他单字符串。 <{1}}和第二个字符类表达式用括号括起来并且是可选的。
如果通过&#34;前导和尾随空格&#34;你的意思是&#34; ... whitespace&#34;,那么最简单的事就是使用.*
\ s`:
\S', the complement of the whitespace escape
使用在线正则表达式测试时,请记住正则表达式有许多不同的符号,而XSD的模式方面总是尝试匹配整个输入文字,因此XSD正则表达式对{许多其他符号中使用的{1}}和\S(.*\S)?
个锚点。