假设我有一个字符串 - "你可以输入最多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)
以上将获取第一组数字.您也可以循环查找所有匹配项:
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
我喜欢@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)
我想我应该添加我的看法,因为我只对第一个整数感兴趣,我将其归结为:
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)