正则表达式使用 javascript 只返回数字

IT技术 javascript regex
2021-02-02 06:06:30

如果我有一个像“something12”或“something102”这样的字符串,我将如何在javascript中使用正则表达式来只返回数字部分?

6个回答

常用表达:

var numberPattern = /\d+/g;

'something102asdfkj1948948'.match( numberPattern )

这将返回一个包含两个元素的数组,'102' 和 '1948948'。随心所欲地操作。如果它不匹配任何它将返回 null。

连接它们:

'something102asdfkj1948948'.match( numberPattern ).join('')

假设您没有处理复杂的小数,我想这应该就足够了。

呃。讨厌挑剔,但这会返回一个数组,而不是一个对象(至少在 chrome 中)。
2021-03-12 06:06:30
@Onza 你在 之前错过了反斜杠d,所以.match(/\d+/g)
2021-03-20 06:06:30
@MuhammadUmer - 你试过了吗?
2021-03-27 06:06:30
@MuhammadUmer、@meder:你们两个应该联合起来: parseInt('987d98sf79s7f9s8f9sf'.match(/\d+/gi).join(''))
2021-04-02 06:06:30
所有的数组都是对象,不是吗?
2021-04-08 06:06:30

您还可以去除所有非数字字符(\D[^0-9]):

let word_With_Numbers = 'abc123c def4567hij89'
let word_Without_Numbers = word_With_Numbers.replace(/\D/g, '');

console.log(word_Without_Numbers)

好吧,除了 OP 想要“只是数字部分”,而不是字符串。
2021-03-13 06:06:30
@ScottFraley 请注意,此代码使用replace方法,而不是match方法;)
2021-03-25 06:06:30

对于带有小数和减号的数字,我使用以下代码段:

const NUMERIC_REGEXP = /[-]{0,1}[\d]*[.]{0,1}[\d]+/g;

const numbers = '2.2px 3.1px 4px -7.6px obj.key'.match(NUMERIC_REGEXP)

console.log(numbers); // ["2.2", "3.1", "4", "-7.6"]

更新: - 7/9/2018

找到了一个可以让你直观地编辑正则表达式的工具:JavaScript Regular Expression Parser & Visualizer

更新:

这是另一个您甚至可以调试正则表达式的工具:Online regex tester and debugger

更新:

另一个:RegExr

更新:

RegexperRegex Pal

完美的,唯一适用于小数和负数的解决方案
2021-03-14 06:06:30

如果你只想要数字:

var value = '675-805-714';
var numberPattern = /\d+/g;
value = value.match( numberPattern ).join([]);
alert(value);
//Show: 675805714

现在你加入了数字

我猜您想从字符串中获取数字。在这种情况下,您可以使用以下方法:

// Returns an array of numbers located in the string
function get_numbers(input) {
    return input.match(/[0-9]+/g);
}

var first_test = get_numbers('something102');
var second_test = get_numbers('something102or12');
var third_test = get_numbers('no numbers here!');

alert(first_test); // [102]
alert(second_test); // [102,12]
alert(third_test); // null
为了清楚起见,get_numbers/1返回一个字符串数组,而不是数字。对于您的示例,它将返回: * ["102"]* ["102", "12"]* null
2021-04-02 06:06:30