1

JavaScriptで正規表現を書こうとしています。次の条件で、名前とバージョンを検証する必要があります。

名前:

  • アルファベットのみ、数字および特殊文字なし
  • 開始または終了に末尾のスペースはなく、単語間に複数のスペースはありません。
  • 最小3文字および最大50文字。

バージョン:

  • フォーマットは[number].[number].[number]
  • 数字の間の1つのドットのみ(1.3..4無効、1.3.4問題ありません)
  • 1.11.26各数値は、 (有効)のように1桁または2桁にすることができますが、2.343.23(無効)にすることはできません。
4

1 に答える 1

9

名前

正規表現

^(?! )((?!  )(?! $)[a-zA-Z ]){3,50}$
  • アルファベットのみ、数字なし、特殊文字=>そのために文字クラスを使用します

    [a-zA-Z]
    
  • 開始または終了に末尾のスペースはなく、単語間に複数のスペースはありません。=>正規表現を「固定」することにより、正規表現が唯一の行であり、部分的に一致することはできないと言います。ネガティブな先読みでは、2つ以上のスペースは許可されていません

    ^...$
    (?!  )
    
  • 最初と最後にスペースがありません=>ここでもいくつかのルックアラウンドを使用できます

    ^(?! )...(?<! )$
    

    ただし、javascriptはルックビハインドをサポートしていないため、ルックアヘッドを使用する必要があります

    (?! $)[a-zA-Z ]
    
  • 最小3文字および最大50文字。

    {3,50}
    

バージョン

正規表現

^\d{1,2}\.\d{1,2}\.\d{1,2}$
  • 形式は[number]。[number]。[number]である必要があります

    \d+\.\d+\.\d+
    
  • 数字の間の単一のドットのみ(1.3..4は無効、1.3.4はOK)=> \ dを指定することにより、数字とそれに続くドットのみが許可されると言います(それ以外の場合は任意の文字を意味するため、エスケープする必要があります)

  • 各数値は、1.11.26(有効)のように1桁または2桁にすることができますが、2.343.23(無効)にすることはできません。

    \d{1,2}
    

最後の正規表現は、javascriptで次のようになります

if (/^\d{1,2}\.\d{1,2}\.\d{1,2}$/.test(subject)) {
    // Successful match
} else {
    // Match attempt failed
}
于 2012-06-06T10:23:25.700 に答える