0

您好我只需要验证字母数字字符的密码(应该同时显示 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: Pattern value '?!^[0-9] $)(?!^[a-zA-Z] $)^([a-zA-Z0-9]{8,20} )$' 不是有效的正则表达式。报告的错误是:“意外的元字符。”。

任何人都可以帮助如何解决这个问题?

谢谢

4

2 回答 2

1

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

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

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

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

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

于 2012-09-21T00:47:46.797 回答
0

缺少左括号?

<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>
于 2012-09-20T14:41:49.597 回答