有人请建议使用正则表达式来验证符合xsd:ID(link)的字符串。
类型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)
这看起来不错吗?
答案 0 :(得分:2)
最简单的方法是使用两个字符类,后者带有*
乘数:
re.compile(r'^[a-zA-Z_][\w.-]*$')
\w
已包含[a-zA-Z0-9_]
。没有必要在这些组周围放置组,但您确实希望将表达式锚定到开头和结尾(^
和$
)以确保您验证整个字符串,而不仅仅是它