如何从javascript中的字符串中提取数字

Sau*_*mar 34 javascript jquery

我在javascript中有一个元素,如下所示:

 <span>280ms</span>
Run Code Online (Sandbox Code Playgroud)

我想从span元素中提取280.我该怎么做?span元素中的内容将是任何数字,后跟ms.

Ale*_*yne 74

parseInt() 很甜蜜.

HTML

<span id="foo">280ms</span>
Run Code Online (Sandbox Code Playgroud)

JS

var text = $('#foo').text();
var number = parseInt(text, 10);
alert(number);
Run Code Online (Sandbox Code Playgroud)

parseInt()将任何字符串作为数字处理,并在到达非数字字符时停止.在这种情况下,m280ms.找到数字28,和0,将这些数字计算为基数10(第二个参数)并返回数值280.请注意,这是一个实际数字而不是字符串.

编辑:
@Alex Wayne的评论.
只需先过滤掉非数字字符.

parseInt('ms120'.replace(/[^0-9\.]/g, ''), 10);
Run Code Online (Sandbox Code Playgroud)

  • 这是最好的答案.请注意,尽管`parseInt`中的10参数是可选的,但您应该使用它来防止将数字意外解析为八进制.如果跨度包含"0700ms",则结果不会返回700,但将为448! (8认同)
  • @ThomasClowes首先过滤掉非数字字符.`parseInt('ms120'.replace(/ [^ 0-9 \.]/g,''),10);` (7认同)
  • @Jacob是对的.如果省略10,则不是默认值.相反,javascript尝试根据字符串格式进行猜测.历史证明,使javascript尝试猜测任何事情都会导致痛苦和痛苦.所以,总是明确地调出你的基数. (2认同)

Mrc*_*ief 18

试试这个:

var num = document.getElementById('spanID').innerText.match(/\d+/)[0];
Run Code Online (Sandbox Code Playgroud)

jQuery版本:

var num = $('span').text().match(/\d+/)[0]; // or $('#spanID') to get to the span
Run Code Online (Sandbox Code Playgroud)

如果您想要数字值(而不是字符串),请使用parseInt:

var num = parseInt($('span').text().match(/\d+/)[0], 10);
Run Code Online (Sandbox Code Playgroud)

  • 使用`parseInt()`,你不需要`regex`匹配.但是,不仅要提供`radix`参数. (2认同)

Jar*_*Par 11

请尝试以下方法

var strValue = // get 280m from the span
var intValue = parseInt(strValue.match(/[0-9]+/)[0], 10);
Run Code Online (Sandbox Code Playgroud)