2016-12-15 9 views
-1

JQueryや普通のJSを使ってテキストエリア内の行数を数える必要がありますが、これは問題ではありません。すべての数字であるテキストエリアの行数を数えますか?

また、各行を順番に調べて、各行を(正規表現で)多分、カンマの有無にかかわらずすべての項目にマッチさせる必要があります。 は、私は必要に応じてマッチングを行う正規表現のビットを持っていると思う:

(?:^|\s)(\d*\.?\d+|\d{1,3}(?:,\d{3})*(?:\.\d+)?)(?!\S) 

私のために難しい部分は、すべての有効な行のテキストエリアの各行を実行し、検証し(カウントを返す)されます。

どうすればいいですか?

+3

入力を行の配列に分割するには、 'line.split( '\ n')'を使用できます。次に、配列をループし、各行を正規表現と照合し、一致するとカウンタをインクリメントします。 – Barmar

+1

'^ | \ s'のInsteaでは、単語境界にマッチさせるために' \ b'を使うことができます。 – Barmar

+0

ありがとう!あなたはそれを持っています。私はあなたのコメントに基づいて答えを掲示しました。 (JS -_-を学ぼうとするのがうれしいdownvotedです) 私はそれを探しました... – Bitz

答えて

0

Barmarのおかげで助けを借りて解決しました。

function getLineCount() { 
     var lines = $('textarea#my-textarea').val().split('\n'); 
     var count = 0; 
     lines.forEach(function (line) { 
      if (/(?:\b)(\d*\.?\d+|\d{1,3}(?:,\d{3})*(?:\.\d+)?)(?!\S)/.test(line)) { 
       count++; 
      } 
     }); 
     //console.log(count); 
     return count; 
    } 

オブジェクトの過負荷を取ることによって、お好みであれば、明らかにそれはより実用的にすることができますが、私のユースケースは、単一のテキストエリアに、より具体的です。

関連する問題