我需要一个正则表达式,以确保字符串不以空格开头或结尾。我不在乎它是否在中间不只是在开头或结尾处都有空格。
我有一个几乎可以正常工作的正则表达式:
^\S.*\S$
以下是一些示例结果:
"HELLO" (Match)
"HEL LO" (Match)
" HELLO" (No Match)
"HELLO " (No Match)
"H" (No Match)
如您所见,我遇到的问题是,当字符串只有1个字符长(在上面的示例中为“ H”)时,它不返回匹配项。
如何修改正则表达式以处理字符串长度为1的情况?
谢谢
注意-我将此数据保存到Xml文件中,因此我需要一个模式来匹配Xml模式中的相同内容。我不确定它是否与C#中使用的Regex相同。
如果有人可以为我提供在我的模式中使用的模式,将不胜感激!
您可以这样做:
^\S(.*\S)?$
它将匹配一个非空格字符,然后是一个可选的零个或多个字符,然后是一个非空格字符。
更新
假设您说这是用于XML模式验证,那么我使用以下模式对其进行了测试:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="xml">
<xs:complexType>
<xs:sequence>
<xs:element name="test" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="value">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="\S(.*\S)?"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
针对此样本文件
<xml>
<test value="HELLO"/> <!-- MATCH -->
<test value="HEL LO"/> <!-- MATCH -->
<test value="HELLO "/> <!-- ERROR -->
<test value=" HELLO"/> <!-- ERROR -->
<test value="H"/> <!-- MATCH -->
</xml>
看来,如果您只是删除起始/结尾括号。有用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句