Sai*_*sha 5 c# regex xml xsd pattern-matching
我想这是一个基本问题,但这种模式对我来说似乎很混乱。我想将一些字符列入黑名单,例如 +、-、@、#、<、>。如果字符在 xml 字段中,那么我想使 xml 无效。
在下面的示例中,如果字符串字段包含上述任何字符,我想将 xml 返回为无效。如果数据是这样的“你好”。它应该是有效的。我应该如何写我的模式。感谢您检查这一点。
XML:
<DataType>System.String</DataType>
<Value>
<String>Data@yours</String>
</Value>
Run Code Online (Sandbox Code Playgroud)
在 XSD 中:
<xs:element name="Value">
<xs:complexType>
<xs:sequence>
<xs:element name="String" type="xs:string" />
</xs:sequence>
<xs:restriction base="xs:string">
<xs:pattern value="[^+-@#%&()<>?]"/>
</xs:restriction>
</xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)
进一步编辑这部分:
我一直收到这些错误:解析 EntityName 时发生错误。- 在我的代码中,实体名称必须紧跟在唯一的 xsd 验证器工具中实体引用中的 & 之后。http://www.utilities-online.info/xsdvalidation/#.VzTwcYSDFBc
它似乎没有遵循这些特殊字符,我该如何更改?再次感谢。
请注意,根据。到正则表达式.info:
特别值得注意的是完全没有像插入符号和美元符号、单词边界和环视等锚点。 XML 模式总是隐式地锚定整个正则表达式。正则表达式必须匹配整个元素,该元素才被视为有效。
因此,要匹配不包含+, @, #, %, &, (, ), <, >, ?, -(至少 1 个符号)的字符串,您需要使用
<xs:pattern value="[^+@#%&()<>?-]+"/>
Run Code Online (Sandbox Code Playgroud)
请注意<, ,>和&应该实体化以在 XML 属性值中使用。
如果你想允许空值,*应该使用 代替+。请注意,将其-放在模式的末尾,以免创建任何如下所示的范围:
| 归档时间: |
|
| 查看次数: |
1721 次 |
| 最近记录: |