1

有人可以建议一个正则表达式来验证应该符合 xsd:ID (链接)的字符串。

  • xsd:ID 类型用于唯一标识 XML 文档中的元素的属性。

  • xsd:ID 值必须是 xsd:NCName。 这意味着它必须以字母或下划线开头,并且只能包含字母、数字、下划线、连字符和句点。

  • xsd:ID 带有几个额外的约束:

    • 它们的值在 XML 实例中必须是唯一的,无论属性的名称或其元素名称如何。

    • 一个复杂类型不能包含多个 xsd:ID 类型的属性,或任何从 xsd:ID 派生的类型。

    • xsd:ID 属性不能指定默认值或固定值。


我正在考虑类似的事情:

reg=re.compile('^([a-zA-Z]|_)(\d|_|-|\.)*')  
reg.match(mystring)

这看起来对吗?

4

1 回答 1

2

最简单的方法是使用两个字符类,后者带有一个*乘数:

re.compile(r'^[a-zA-Z_][\w.-]*$')

\w已经包括[a-zA-Z0-9_]. 无需围绕这些设置组,但您确实希望将表达式锚定到开始和结束 ( ^and $) 以确保您正在验证整个字符串,而不仅仅是它的一部分。

于 2012-09-08T15:48:00.483 回答