0

こんにちは、英数字のみのパスワードを検証する必要があります (0 から 9 までのアルファベットと数字の両方を提示する必要があります)。つまり、少なくとも1桁の数字と残りのアルファベットが含まれている必要があります

私が使用する正規表現は次のとおりです。

     <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 仕様で定義されている構文に準拠していません。少なくとも 1 つの数字を含む英数字の文字列が必要だとします。その言語を認識する 1 つの XSD スタイルの正規表現は、

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

これは、Unicode 文字と 10 進数の任意の組み合わせを受け入れます。パスワードをASCIIに制限したい場合は、次のように言うことができます

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

minLength長さを 8 から 20 の間のどこかに制限するには、ファセットとファセットを使用するのが最も簡単ですmaxLength

于 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 に答える