假设我有一个类似“您最多可以输入 500 个选项”的字符串。我需要500
从字符串中提取。
主要问题是字符串可能会有所不同,例如“您最多可以输入 12500 个选项”。那么如何得到整数部分呢?
假设我有一个类似“您最多可以输入 500 个选项”的字符串。我需要500
从字符串中提取。
主要问题是字符串可能会有所不同,例如“您最多可以输入 12500 个选项”。那么如何得到整数部分呢?
使用正则表达式。
var r = /\d+/;
var s = "you can enter maximum 500 choices";
alert (s.match(r));
该表达式的\d+
意思是“一位或多位数字”。默认情况下,正则表达式是贪婪的,这意味着它们会尽可能多地抓取。还有这个:
var r = /\d+/;
相当于:
var r = new RegExp("\d+");
以上将抓取第一组数字。您也可以循环查找所有匹配项:
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
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);