2012-03-08 18 views
0

で区切り、私は正規表現とあまり良くないです、私はいくつかの助けを必要と私はこだわっています...正規表現とJavaScript

これは私が得たものである:

EDITED:今すぐ正常に動作している、取ります...

http://jsfiddle.net/oscarj24/qrPHk/1/

を見てこれは私が必要なものである:

// First 4 numbers must be always 9908 
// After the 4 first numbers must be a : as delimiter 
// After the delimiter... 
// - the allowed values are just numbers from 0-9 
// - the min. length is 3 
// - the max. length is infinite 
// RESULT: 
// - Valid: 9908:123 or 9908:123456... 
// - Invalid: 9908:12 or 9908:xyz 

ありがとうございます。

答えて

9
var regex = /^9908:\d{3,}$/; 

は、正確に9908に一致します。その後に3桁以上の数字が続きます。

+0

おかげであなたはここでより多くの情報を見つけることができますいくつかの他の修飾子があります! Mike Tangolics(次の記事から)はすべてをより明確にして、私の間違いは省略形のjavascript正規表現を使用しないようにしましたが、現在はうまく動作します:-) –

5

Alexander Corwinの回答はうまくいくはずです。私はちょうど彼の応答にいくつかの説明を追加したい。

角括弧は、それらの文字が有効であることを意味するため、9908の周囲に角括弧は必要ありません。だからあなたのコードが実際にやろうとしていたのは、9、0、または8のいずれかにマッチするものでした。リテラル文字列を指定したいときは、そのように書くことができます。

しかし、私が見ている第2の問題は、9908セグ​​メントの長さを指定するために間違った量指定子構文を使用したことです。彼のコードで{3、}のような特定の長さの範囲を指定するには、中括弧を使用する必要があります。括弧は単にシーケンスとバックリファレンスのグループを作成するために使用されます。

また、RegExpオブジェクトを作成していないときは、スラッシュで開始および終了する省略形のJavaScript正規表現構文を使用する必要があります。正規表現の実行方法を変更する終了スラッシュの後に修飾子を追加することもできます。例:

var re = /stackoverflow/g; 

「g」は、対象文字列に対して複数回一致することを意味します。 http://www.regular-expressions.info/javascript.html

あなたの固定回線は次のようになります:

var regex = /^9908:\d{3,}$/; 
+0

良い説明、多く! –

+0

この回答は[Modifier]の[Stack Overflow Regular Expression FAQ](http://stackoverflow.com/a/22944075/2736496)に追加されました。 – aliteralmind

1

使用この:あなたの答えのための

var match = /^9908:[0-9]{3,}$/.test("9908:123"); 
​alert(match);​ 
+0

素敵な試みですが、Alexander Corwinが最初に答えました:-)また、 '[0-9]'の代わりに '\ d'を使用する方が良いですが、あなたの答えにも感謝します。 –