【发布时间】:2014-09-14 06:51:51
【问题描述】:
我正在尝试通过 javascript 中的正则表达式查找多个连续数字
假设我有:
12345abc123
我想知道我有多少次连续获得 3 个或更多数字。现在我正在使用:
/\d{3}/g
但这给了我:123、123,我想要:123、234、345、123
如何更改我的正则表达式以获得我想要的?
【问题讨论】:
标签: javascript regex
我正在尝试通过 javascript 中的正则表达式查找多个连续数字
假设我有:
12345abc123
我想知道我有多少次连续获得 3 个或更多数字。现在我正在使用:
/\d{3}/g
但这给了我:123、123,我想要:123、234、345、123
如何更改我的正则表达式以获得我想要的?
【问题讨论】:
标签: javascript regex
你可以使用这个正则表达式:
/(?=(\d{3}))/g
代码:
var re = /(?=(\d{3}))/g;
var str = '12345abc789';
var m;
while ((m = re.exec(str)) != null) {
console.log(m[1]);
}
输出:
123
234
345
789
【讨论】:
.?
.
您必须使用前瞻断言:
var str = '12345abc123',
re = /\d(?=(\d\d))/g;
while ((match = re.exec(str)) !== null) {
// each match is an array comprising
// - the first digit and
// - the next two digits
console.log(match.join(''));
}
如果后面有两个数字,则匹配一个数字;断言导致引擎在第一个匹配数字之后立即开始下一次搜索。
【讨论】:
这是您要查找的正则表达式:
/(?=(\d{3}))/g
【讨论】: