JQuery过滤字符串的数字

Tom*_*kay 24 javascript string jquery

你如何只过滤字符串的数字?

Example Pseudo Code:
number = $("thumb32").filternumbers()
number = 32
Run Code Online (Sandbox Code Playgroud)

Jon*_*ter 71

你不需要jQuery - 只需简单的旧的JavaScript 正则表达式替换

var number = yourstring.replace(/[^0-9]/g, '')

这将摆脱任何不是[0-9]

编辑:这是一个小函数,用于从输入字符串中提取所有数字(作为实际数字).这不是一个详尽的表达,但对任何需要的人来说都是一个良好的开端.

function getNumbers(inputString){
    var regex=/\d+\.\d+|\.\d+|\d+/g, 
        results = [],
        n;

    while(n = regex.exec(inputString)) {
        results.push(parseFloat(n[0]));
    }

    return results;
}

var data = "123.45,34 and 57. Maybe add a 45.824 with 0.32 and .56"
console.log(getNumbers(data));
// [123.45, 34, 57, 45.824, 0.32, 0.56];
Run Code Online (Sandbox Code Playgroud)

  • 为什么正则表达式这么难?它看起来很陌生,我的大脑似乎立即关闭,因为它被很多标点符号所淹没......和符号,如果我不知道它们的含义但是知道它们意味着什么...为什么我必须每次看这个?无论如何,信息都不会留在我的脑海里...... (8认同)
  • ^欢迎来到俱乐部. (7认同)

Poi*_*nty 26

根本不是jQuery:

number = number.replace(/\D/g, '');
Run Code Online (Sandbox Code Playgroud)

该正则表达式/\D/g匹配任何非数字.因此,.replace()使用空字符串替换所有非数字(所有这些,由于"g")的调用.

编辑 - 如果你想要一个实际的*数字值,你可以parseInt()在从字符串中删除非数字后使用:

var number = "number32"; // a string
number = number.replace(/\D/g, ''); // a string of only digits, or the empty string
number = parseInt(number, 10); // now it's a numeric value
Run Code Online (Sandbox Code Playgroud)

如果原始字符串可能根本没有数字,你会得到的数字非价值NaNparseInt在这种情况下,这可能是比什么都好.