我們在加載 XML 檔案之前使用 XSD 模式驗證。因此,在加載帶有 XSD 架構驗證的 XML 時,它接受字串開頭和結尾的空格。我們只需要限制字串開頭和字串末尾的空格。但是字串的中間我們需要接受字串之間的空格。
示例:SOMEXMLFIELD ="STACK OVER FLOW"。
為此,我們為架構驗證配置了以下 XSD 模式值。
例子 : <xs:pattern value="^[A-Za-z0-9 _.,']*[A-Za-z0-9_.,'] [A-Za-z0-9 _.,']*$"/>
任何人都可以建議我如何僅限制字串開頭和結尾的空格(注意:我們需要接受字串之間的空格)?.
uj5u.com熱心網友回復:
這個 XSD,
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="e">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[^\s]?"/>
<xs:pattern value="[^\s].*[^\s]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:schema>
將允許e有內部空白,但不能以空白開始或結束。
請注意,XSD 正則運算式模式是隱式錨定的,因此不要使用^和$用于錨定。
參考:
注意:與一些流行的正則運算式語言(包括由 Perl 和標準 Unix 實用程式定義的那些)不同,這里定義的正則運算式語言隱式地將所有正則運算式錨定在頭和尾,因為正則運算式在·pattern·中最常見的用法是匹配整個文字。
更新: @Thefourthbird 有一個很好的觀點,即可能應該允許沒有前導/尾隨空格的 1 和 2 個字串。我也扔了空字串。
uj5u.com熱心網友回復:
如果您還想允許匹配 1 和 2 個字符,您可以開始匹配不允許空格,并可選擇匹配任何字符,包括中間的空格,并再次匹配沒有空格的字符。
[A-Za-z0-9_.,']([A-Za-z0-9 _.,']*[A-Za-z0-9_.,'])?
正則運算式演示
或者簡而言之:
[\w.,']([\w .,']*[\w.,'])?
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/362077.html
