如何使用 JavaScript 在字符串中查找数字?

IT技术 javascript regex
2021-02-01 20:37:43

假设我有一个类似“您最多可以输入 500 个选项”的字符串。我需要500从字符串中提取

主要问题是字符串可能会有所不同,例如“您最多可以输入 12500 个选项”。那么如何得到整数部分呢?

6个回答

使用正则表达式

var r = /\d+/;
var s = "you can enter maximum 500 choices";
alert (s.match(r));

该表达式的\d+意思是“一位或多位数字”。默认情况下,正则表达式是贪婪的,这意味着它们会尽可能多地抓取。还有这个:

var r = /\d+/;

相当于:

var r = new RegExp("\d+");

请参阅RegExp 对象详细信息

以上将抓取第一组数字。您也可以循环查找所有匹配项:

var r = /\d+/g;
var s = "you can enter 333 maximum 500 choices";
var m;
while ((m = r.exec(s)) != null) {
  alert(m[0]);
}

g(global)标志是这个循环中的工作重点。

var regex = /\d+/g;
var string = "you can enter maximum 500 choices";
var matches = string.match(regex);  // creates array from matches

document.write(matches);


参考:

    http://www.regular-expressions.info/javascript.html

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp

var str = "you can enter maximum 500 choices";
str.replace(/[^0-9]/g, "");
console.log(str); // "500"

我喜欢@jesterjunk 的回答,但是,数字并不总是只是数字。考虑这些有效数字:“123.5、123,567.789、12233234+E12”

所以我只是更新了正则表达式:

var regex = /[\d|,|.|e|E|\+]+/g;

var string = "you can enter maximum 5,123.6 choices";
var matches = string.match(regex);  // creates array from matches

document.write(matches); //5,123.6
试过你的正则表达式了吗?它匹配任何e字符(或该列表中的任何其他字符,“E”、“,”或“.”)。对于您的输入matches[ 'e', 'e', '5,123.6', 'e' ]
2021-03-20 20:37:43

var regex = /\d+/g;
var string = "you can enter 30%-20% maximum 500 choices";
var matches = string.match(regex);  // creates array from matches

document.write(matches);