xsd中的字母数字密码验证

时间:2012-09-19 20:43:20

标签: xml validation passwords xsd

您好我需要验证只有字母数字字符的密码(应该显示0..9的字母和数字)。我的意思是它应该包含至少一个数字和剩余的字母

我使用的正则表达式是这样的:

     <xsd:simpleType name="PasswordType">
         <xsd:restriction base="xsd:string">
             <xsd:pattern value="?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,20})$"/>
         </xsd:restriction>
    </xsd:simpleType>

但是eclipse抱怨错误: InvalidRegex:模式值'?!^ [0-9] $)(?!^ [a-zA-Z] $)^([a-zA-Z0-9] { 8,20})$'不是有效的正则表达式。报告的错误是:  '出乎意料的元字符。'。

有人可以帮忙解决这个问题吗?

由于

1 个答案:

答案 0 :(得分:1)

我不确定您使用的是哪种正则表达式语法,但您提供的表达式不符合XSD规范中定义的语法。你说你想要一串包含至少一个数字的字母数字字符。一个识别该语言的XSD样式正则表达式

\p{L}*\d(\p{L}|\d)*

接受任何Unicode字母和十进制数字的混合;如果你想将密码限制为ASCII,你可以说

[a-zA-Z]*[0-9][a-zA-Z0-9]*

要将长度限制在8到20之间,最简单的方法是使用minLengthmaxLength方面。