2016-07-05 16 views
0
new RegExp('^\\d+[.]?([0,2,5,7]?[0,5])?$').test(236.70) 

なぜこのコードは123.20と123.70で動作しないのですか?それは成功し、次の入力をテストするのに対し:正規表現が正しく一致しない

123.00, 123.05, 123.25, 123.50, 123.55, 123.75

+1

は、文字列の代わりに番号を渡すようにしてください:) –

+2

あなたはカンマを一致させるつもりでない限り、あなたは文字クラスにコンマを置くべきではありません。正規表現のリテラルも優先されるべきです。 @/@ \ n \ + + \ {0373}}} $/' – 4castle

+0

ありがとう@ 4キャスル、これは助けた –

答えて

3

をあなたは値236.70を渡していると、おそらくJavaScriptが236.70 == 236.7が最後0ストリッピングされます。その後、正規表現の最後の部分と一致しません。一致する部分は[0,5]です。

代わりに、末尾に0を残すように文字列にキャストします。

+1

ありがとう@fedorqui –

3

正規表現にはいくつかの構文エラーがあります。小数と一致する部分では、括弧の外側に?があります(おそらく)内部にある必要があり、一致させようとしていないにもかかわらず文字クラスに,があります。

文字クラス([])に一致させる個の個別の文字を入力する必要があります。 -(例:[0-9])を使用して、の範囲の文字を取得することもできます。

new RegExp('^\\d+[.]?([0257]?[05]?)$').test(236.70) 
+0

ありがとうございました@Rocket Hazmat –

+0

新しいRegExp( '^([5-9 (00.50) VM37068:1 Uncaught SyntaxError:missing)引数リストの後に (1)[1-9] [0-9])[[。 なぜこのエラーが発生しますか? –

+0

@vikkyDevil: '00.50'は有効な数字ではありません。 '0.50'、' 0.5'あるいは単に '.5'を試してみてください。 –

関連する問題