2012-03-26 10 views
-2

これは文字列の中で探しています:XXXX-XXX-XXXここでXは任意の数字です。このRegExpを作成する方法

私はJavaScriptを使用して文字列でこれを見つける必要がありますので、私にもJavaScriptを提供できる人にはボーナスポイントが付いています。私は正規表現を作成しようとした:^[0-9]{4}\-[0-9]{3}\-[0-9]{3}$

また、私はあなたの正規表現を作成するためにあなたが使用しているチートシートやプログラムの知りたいです。

+0

私は正規表現を作成しようとしました:^ [0-9] {4} \ - [0-9] {3} \ - [0-9] {3} $ – MichaelH

+0

これは合理的な質問ですか? @AmitBhargavaハイフンは正規表現の構文文字なので、リテラルとして動作するようにハイフンをエスケープする必要があるので、あなたの答えは正しくありません。 – austincheney

+0

ありがとう@austincheney –

答えて

3

i suppose this is what you want:疑いで

\d{4}-\d{3}-\d{3} 

?あなたの試みと「正規表現テスター」

+0

ハイフンは正規表現の構文文字であるため、エスケープする必要があります。 – austincheney

+1

@austincheney本当ですか? [それは*エスケープダッシュなしで動作する](http://jsfiddle.net/Ck3pm/) – Joseph

+0

あなたは文字セットの外で適用されることは確かですか? – hexparrot

-1
var result = (/\d{4}\-\d{3}\-\d{3}/).exec(myString); 
+0

-1は、ハイフンをエスケープする必要性に関する誤報を広めるためのものです。 –

+0

@AdamZalcman今あなたは虚弱です。私は上記のあなたのコメントに答えました。 – austincheney

1

のためのGoogleの:

^[0-9]{4}\-[0-9]{3}\-[0-9]{3}$ 

-がメタ文字ではないので、それをエスケープする必要はありません - これは、明示的なバックスラッシュ文字を探していますが。

また、文字列の先頭と最後にマッチを固定しました。これはという数字のの文字列と一致します。 (まあ、残りは正しかったと仮定した場合)

を、私はカウントの{3}スタイルのように、ほとんどの人が知っているが、一致している事は一桁のとき、私は、これは、より読みやすい見つける:

明らか
\d\d\d\d-\d\d\d-\d\d\d 

あなたは16進数に一致するまで、これを拡張したい場合は、このいずれかを拡張することは恐ろしいことだろうが、私は、これは選択肢よりもはるかに読みやすいと思う:あなたが読むことが最も簡単であるものは何でもして

\d{4}-\d{3}-\d{3} 
[[:digit:]]{4}-[[:digit:]]{3}-[[:digit:]]{3} 
[0-9]{4}-[0-9]{3}-[0-9]{3} 

移動します。

perlre(1)マンページを私の主な参照として使用する傾向があります。これは、多くの正規表現エンジンよりはるかに機能が豊富であることを十分に理解しています。私は、perlreマンページがほとんどのシステム上でどの程度便利に利用できるかを考慮して、違いを処理する用意ができています。

関連する問題