2010-11-24 10 views
1

私はこれらのフォーマットのいずれかの文字列にマッチする正規表現が必要:AAAA00000000-0000と一致する正規表現パターンを書くには?

  1. "AAAA00000000"
  2. "AAAA00000000-0000"
  3. "0000000000"

私が持っています第1パターンと第3パターンの権利、これは私が思いついたものです

私はそれを得ることができません第2のパターンを含む。ある

+0

「[0-9] {10}」はどこから来たのですか? '0000000000'もマッチするはずです(先行文字なし)? – jensgram

+0

はい、アップデート – dom

+0

を参照してください。確認: – jensgram

答えて

5
^[a-zA-Z]{4}[0-9]{8}(-[0-9]{4})?$ 

XXXXnnnnnnnn任意-nnnn部分。

  • XXXXnnnnnnnn
  • XXXXnnnnnnnn-nnnn

このグループがマッチ全体(キャプチャグループ0)に等しいようにあなたが最も外側の括弧を省略することができます。

EDIT
更新あまりにも、nnnnnnnnnn一致します

^[0-9]{10}|[a-zA-Z]{4}[0-9]{8}(-[0-9]{4})?$ 

マッチ:

  • nnnnnnnnnn
  • XXXXnnnnnnnn
  • XXXXnnnnnnnn-nnnn
  • コメントに反応して

EDIT#2
、これは私が調理することができるよ最も読みやすい/最短です。すぐ上のよう

^[0-9]{10}|[a-zA-Z]{4}[0-9]{8}(-[0-9]{4}|)$ 

同じ特性を。

+0

XXXXnnnnnnnn-nnnnおよびnnnnnnnnnnパターンで動作し、XXXXnnnnnnnnで失敗します。 – dom

+0

@dombenoitどの言語を使用していますか。私はhttp://www.regexplanet.com/simple/index.htmlでテストしました。* I * intendとして動作します。 – jensgram

+0

@dombenoit '? '演算子がサポートされるべきではないと信じるのは難しいですが、' {0,1} 'で置き換えてみてください...' ^([0-9] {10} | [a-zA-Z] {4} [0-9] {8} - [0-9] {4} | [a-zA-Z] {4} [0-9] {8})$ '仕事? – jensgram

0

^\は{4} \ D {8}ワット( - \ dの{4})タイプミス

+0

問題ありません。あなたのオプションのパターンに閉じる}を逃したと思う – skyfoot

+0

ああありがとう。私はそれを読み返すべきだった。 – Thomas

0

あなたが不足している固定$

? " - " 第二のフォーマットのを...

0
^[a-zA-Z]{4}([0-9]{8}|[0-9]{8}\-[0-9]{4})$ 
関連する問題