如何使用正则表达式检索字符串中的两个数字
how retrieve two numbers in string using regex
我试图从以下字符串中检索两个整数(而不是浮点数):
0 1
0 2
0 3
0 4
0 5
0 6
0 7
0 8
12 11
10 22
33 2
102 149
我想进入javasScript,比如:
var line = "0 1";
var firstInt = line.someMagic();
var secondInt = line.someMagic();
请帮忙。任何帮助都将不胜感激。谢谢
编辑
不能使用拆分方法
cos有时该行在每行的前面或末尾有额外空间!
类似:
var line="0 2";
这就是我需要regex的原因。
编辑2
事实证明,我不需要正则表达式!
谢谢你的帮助!
只需将空格上的行拆分,并将字符parseInt
转换为数字:)
var line = "-21 42";
var ints = line.split(' ').map(function (num) {
return parseInt(num, 10);
});
var firstInt = ints[0]; // -21
var secondInt = ints[1]; // 42
编辑:
如果你担心尾随空格等,只需先trim
字符串:
var ints = line.trim().split(' ').map(...
此解决方案仅适用于正整数
// ES5
var input = "0 1";
var matches = input.match(/'d+/g);
var a = matches[0];
var b = matches[1];
console.log(a); // 0
console.lob(b); // 1
使用ES6 会更好一点
// ES6
let input = "0 1";
let [a,b] = input.match(/'d+/g);
console.log(a); // 0
console.lob(b); // 1
也就是说,RegExp并不是解决这个问题的唯一方法。您可能有前导或尾随空格,但这不是问题。这里有一个功能性的方法,可以为你快速解决这个问题
const isNumber = x => ! Number.isNaN(x);
const parseInteger = x => window.parseInt(x, 10);
let input = ' 20 -54 ';
let [a,b] = input.split(' ').map(parseInteger).filter(isNumber);
console.log(a); // 20
console.lob(b); // -54
还要注意,有些人建议使用.trim
,这并不能真正解决您的问题。修剪可能会删除字符串开头的多余空格,但不会删除数字之间的多余空格。无论使用了多少空间,我的上述解决方案都能工作,但如果您对其进行评估,您会发现它可能会通过使用regexp 拆分(而不是匹配)而得到改进
// same effect as above, but breaks the string into less parts
let [a,b] = input.split(/'s+/).map(parseInteger).filter(isNumber);
这样做的结果是map
和filter
操作不必测试那么多的''
(空字符串)和NaN
(不是数字)值。然而,使用regexp引擎的性能成本可能不会超过用于逐个处理空字符串的几个额外周期。
您可以使用split方法将字符串分解为数组:
var line = "0 1";
var pieces = line.trim().split(" ");
console.log(pieces);
如果您喜欢使用正则表达式:
var line = "0 1";
var pieces = /('d+)'s('d+)/g.exec(line);
console.log(pieces);
您甚至不需要regex,它可以非常简单地完成:
var line = "0 1";
// Split line into an array using the space as a delimiter
var parsedLine = line.split(" ");
var firstInt = parsedLine[0]; // => 0
var secondInt = parsedLine[1]; // => 1
相关文章:
- 计算HTML表TD中两个数字之间的百分比
- 如何使用 JavaScript 将两个数字相加
- 用于添加两个数字的javascript闭包的用法
- 通过变量在两个数字之间切换
- 在数字字符串的最后两个数字上加上小数
- 在HTML/JavaScript中减去两个数字
- 把两个数字加在一起,得到5+10=510,而不是15
- 敲除:如何对两个数字输入进行双向绑定
- 在 JavaScript 中使用最后两个数字获取年份
- jquery json 返回添加两个数字的数据
- 添加两个数字,并使用Javascript在文本框中显示结果
- 添加两个数字的JavaScript函数工作不正常
- 在JavaScript中递归地添加任意两个数字
- 检查数字是否在两个数字之间
- 添加两个数字变量将返回 NaN
- 检查两个数字是否相等的最佳方法
- Javascript将两个数字相乘返回NaN
- AngularJS:将对象中的两个数字相乘,然后得到总数
- 将逗号javascript后的最后两个数字四舍五入
- JavaScript函数将两个数字相乘,直到它们彼此相等