2011-07-25 22 views
1

次の仕様のユーザ名を作成できる正規表現パターンを作成しようとしています。Javascriptの正規表現パターン

最初の文字は英字(大文字または小文字)でなければなりません[a-zA-Z] 最後の文字は次のいずれかでなければなりません(この初期パターンの目的のために、私は標準的なアメリカ英語のアルファベットのみを使用しています。英数字(大文字または小文字)[a-zA-Z0-9] 文字の間には、1つのルールを持つ文字または数字を使用する必要があります。

ユーザーは、ピリオド(。)、ダッシュ( - )、またはアンダースコア(_)が続く必要がありますが、英数字が続く必要がありますので、一度に1文字以上の繰り返しはありません。

次の正規表現パターンを試しましたが、結果が得られません願っている。これを手伝ってくれてありがとう。

^[a-zA-Z]([a-zA-Z0-9]+[._-]?[a-zA-Z0-9]+)+$ 

EDIT

それは実際に私が期待される道を働いている可能性があります。しかし、私は常に2つの試合が私に返されています。最初の文字列は有効な文字列全体であり、2番目の文字列は最初の文字列を短縮したものです。有効な入力の

例:

  • Spidy
  • Spidy.Man
  • AMA-ZA-zing_Spidy無効な入力の

例:

  • Extreme_ _ _Spi DY(繰り返しアンダースコア)
  • _-_ Spidy(繰り返される特殊文字)
  • _ _ SPIDY _ _(開始および特殊文字で終わる)

答えて

5

は、このパターンのような音:

^[a-zA-Z]([._-]?[a-zA-Z0-9])*$ 
+0

ありがとう、これは私自身のものよりずっといいです。なぜ私のtext.match(パターン)が複数のマッチを返すのかに関するアイデア? – Spidy

+1

ラウンドカッコはキャプチャグループとして倍増するため、キャプチャされた値も表示されます。あなたが知る必要があるのは、文字列が一致しているかどうかであるから、すべてを破棄することができます。 –

1
^[a-zA-Z]([._-]?[a-zA-Z0-9]+)*$