2016-05-24 14 views
0

私はレゲエを試していて、電話番号からかっこ、括弧などの特殊文字を削除しようとしていました。最初の3桁(私が意図したもの)を取得する代わりに、これを取得しています['201'、インデックス:0、入力: '2014447777'] どうしてですか?全く一致がない場合特殊文字を除いた正規表現と一致する数字が正しく動作しない

function numbers(num){ 
return num.replace(/[^0-9]/g, "").match(/\d\d\d/); 

} 
numbers("(347)4448888"); 
+1

予想される出力は何を使用し、最初の3桁の数字を取得するには? – AKS

+0

予想される出力はわずか347です(文字列ではありません) – learningcoding

答えて

3

String#match戻り

全体の一致結果および任意含む配列一致の結果を括弧は捕捉、またはnull。

return num.replace(/\D+/g, '').match(/\d{3}/)[0]; 
        ^^^    ^^^^^ ^^^ : Match all non-digits 
             ^^^^^ ^^^ : Match three digits and returns digits from the array. 
+0

ありがとうございます。しかし、なぜ私は配列を取得していますか? – learningcoding

+0

また、「一致がない場合はnull」という意味を説明できますか?それは1文字を探していたときに起こったもので、0文字を返さなかった場合はnullですが、なぜ理解しないのですか – learningcoding

+0

@learningcoding 'match'はあなたが問題に追加したものと一致する配列を返します。デフォルトを使用するには、 'return num.replace(/ \ D +/g、 '').match(/ \ d {3} /)[0] ||を使用します。 0; ' – Tushar

関連する問題