37

how can I count the number of integers in a string using jQuery or javascript?

For example g66ghy7 = 3

David
  • 3,599
  • 6
  • 29
  • 47

6 Answers6

65
alert("g66ghy7".replace(/[^0-9]/g,"").length);

Look here.

Petar Ivanov
  • 88,488
  • 10
  • 77
  • 93
8

I find this to look pretty/simple:

var count = ('1a2b3c'.match(/\d/g) || []).length

A RegExp will probably perform better (it appears):

var r = new RegExp('\\d', 'g')
  , count = 0

while(r.exec('1a2b3c')) count++;
Ricardo Tomasi
  • 33,240
  • 2
  • 54
  • 66
5

The simplest solution would be to use a regular expression to replace all but the numeric values and pull out the length afterwards. Consider the following:

var s = 'g66ghy7'; 
alert(s.replace(/\D/g, '').length); //3
cillierscharl
  • 6,875
  • 3
  • 27
  • 45
0

Short and sweet:

str.match(/\d/g)?.length || 0

Thanks to @CertainPerformance answer here

const str = 'g66ghy7'
const digitCount = str.match(/\d/g)?.length || 0;
console.log('digitCount', digitCount)
danday74
  • 45,909
  • 39
  • 198
  • 245
0

A simple for can solve this:

const value = "test:23:string236";

let totalNumbers = 0;
for (let i = 0; i < value.length; i++) {
        const element = value[i];        
        if (isFinite(element)) {
            totalNumbers++;
        }
    }
    
console.log(totalNumbers);
0

A little longer alternative is to convert each char to a number; if it doesn't fail, raise the counter.

var sTest = "g66ghy7";

var iCount = 0;
for (iIndex in sTest) {
    if (!isNaN(parseInt(sTest[iIndex]))) {
        iCount++;
    }
}
alert(iCount);

Also see my jsfiddle.

scessor
  • 15,965
  • 4
  • 40
  • 53