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

Dev*_*evi 54 javascript regex

假设我有一个字符串 - "你可以输入最多500个选项".我需要500从字符串中提取.

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

cle*_*tus 94

使用正则表达式.

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

表达式\d+表示"一个或多个数字".默认情况下,正则表达式是贪婪的,这意味着它们会尽可能多地抓取它们.这个:

var r = /\d+/;
Run Code Online (Sandbox Code Playgroud)

相当于:

var r = new RegExp("\d+");
Run Code Online (Sandbox Code Playgroud)

请参阅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]);
}
Run Code Online (Sandbox Code Playgroud)

g(global)标志是关键这个循环工作.


jes*_*unk 15

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

document.write(matches);
Run Code Online (Sandbox Code Playgroud)


参考文献:

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

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


Dud*_*udi 7

我喜欢@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
Run Code Online (Sandbox Code Playgroud)


Jim*_*erg 6

我想我应该添加我的看法,因为我只对第一个整数感兴趣,我将其归结为:

let errorStringWithNumbers = "error: 404 (not found)";        
let errorNumber = parseInt(errorStringWithNumbers.toString().match(/\d+/g)[0]);
Run Code Online (Sandbox Code Playgroud)

.toString()仅当您从获取错误中获取“字符串”时才会添加。如果没有,那么您可以将其从线路中删除。


小智 5

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


小智 5

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);
Run Code Online (Sandbox Code Playgroud)


小智 5

你也可以试试这个:

var string = "border-radius:10px 20px 30px 40px";
var numbers = string.match(/\d+/g).map(Number);
console.log(numbers)
Run Code Online (Sandbox Code Playgroud)