2017-11-26 1 views
-1

JavaScriptを使用して文字列からすべての数値、ネガティブおよび小数点も取得したいと考えています。理想的には、これらの数字は配列になります。JavaScriptでRegexを使用して、ネガと浮動小数点を含む文字列から数値の配列を取得する

Examples: 
'1 2.5 5' ---> [1, 2.5, 5] 
'-4.7 abcd56,23' ---> [-4.7, 56, 23] 

は、ここで私が持っているものです。

function processUserInput() { 
    let rawUserInput = document.getElementById("number-input").value; 
    let negativeNumRegex = /^-?[0-9]\d*(\.\d+)?$/g; 
    return negativeNumRegex.exec(rawUserInput); 
} 

これは常にnullを返します。どんな助けもありがとう!

+2

両端にアンカーと 'g'フラグが付いた式を持つことはめったにありません。 (交互に行うことはできますが、それ以外は普通はありません) –

+1

@ T.J.Crowderそうです、私のコードが実際に見えるように変更しました。それは私のコードで今問題ではない、文字列は正常です。 – Jacobjanak

答えて

4

両端にアンカーがあり、フラグがgであることはほとんどありません。それが「doesnのこと/-?[.\d]+/g

const rex = /-?[.\d]+/g; 
 
console.log('1 2.5 5'.match(rex)); 
 
console.log('-4.7 abcd56,23'.match(rex));
.as-console-wrapper { 
 
    max-height: 100% !important; 
 
}

注:(。それができる、交互、それは通常はないこと以外で)

私はおそらく単純なものを使用したいです4..2などのものに対して妥当性を確認する。読者に残してください。 :-)

2

この正規表現:

/^-?[0-9]\d*(\.\d+)?$/g 

は次のようになります。

/-?\d+(\.\d+)?/g 

だから、どこでも、文字列の内部ではなく、最初から全体の文字列の末尾に数字を見つけることができます。

次回は、正規表現のテストをregex101にすることをお勧めします。なぜそれが失敗するのかがわかります。

+0

それは私にとって正しい方向への一歩です!しかし、それは最初の番号のためだけに働いています。 /-?¥d+(\.\d+)?/g.exec('1-23.5 ')は長さ1の配列を返します。これはあなたがリンクしたウェブサイトでは動作しますが、コンソールでは動作しません。何か不足していますか? – Jacobjanak

+0

正規表現ではなく、文字列での一致を使用します。 T.J Crowderの回答には例があります。 – lilezek

+0

ああ、私は今参照してください。 Stack Overflowにはこれに似た答えがたくさんありますが、T.Jの例が本当に必要でした。私の目的のために正しい表現を見つけたら、実際に正規表現を使う方法を私に教えてください。 – Jacobjanak

関連する問題