您好我需要验证只有字母数字字符的密码(应该显示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})$'不是有效的正则表达式。报告的错误是: '出乎意料的元字符。'。
有人可以帮忙解决这个问题吗?
由于
答案 0 :(得分:1)
我不确定您使用的是哪种正则表达式语法,但您提供的表达式不符合XSD规范中定义的语法。你说你想要一串包含至少一个数字的字母数字字符。一个识别该语言的XSD样式正则表达式
\p{L}*\d(\p{L}|\d)*
接受任何Unicode字母和十进制数字的混合;如果你想将密码限制为ASCII,你可以说
[a-zA-Z]*[0-9][a-zA-Z0-9]*
要将长度限制在8到20之间,最简单的方法是使用minLength
和maxLength
方面。