44

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

For example g66ghy7 = 3

David
  • 3,927
  • 6
  • 30
  • 48

6 Answers6

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

Look here.

Petar Ivanov
  • 91,536
  • 11
  • 82
  • 95
9

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
  • 34,573
  • 2
  • 55
  • 66
7

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
  • 7,043
  • 3
  • 29
  • 47
1

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
  • 52,471
  • 49
  • 232
  • 283
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,995
  • 4
  • 43
  • 54