最长随之而来的数字模式我有一个字符串:查找字符串
var mystring = http://www.myurl.com/45/abc/12345/place/123456
我如何才能找到与正则表达式,在该字符串最长随之而来的数字模式anywhere
?
输出应该123456
,因为如果我知道长度恰好:
mystring.match(/\d{6}/g);
最长随之而来的数字模式我有一个字符串:查找字符串
var mystring = http://www.myurl.com/45/abc/12345/place/123456
我如何才能找到与正则表达式,在该字符串最长随之而来的数字模式anywhere
?
输出应该123456
,因为如果我知道长度恰好:
mystring.match(/\d{6}/g);
这里是一个可能的解决方案:
console.log(mystring.match(/\d+/g).sort((a, b) => b - a)[0]);
提取号码的所有序列,然后找到所得数组中最长的。
function byLength(a,b) { return a.length > b.length ? -1 : a.length == b.length ? 0 : 1 }
var digit_sequences = mystring.match(/(\d+)/g).sort(byLength)
digit_sequences[0] // '123456'
的问题是,正则表达式本身文本块匹配的匹配操作过程中,不单独跟踪匹配。不可能将最长的数字块与仅仅是正则表达式匹配。
提取所有数字块,然后以降序排序值和抢第一项:
var mystring = "http://www.myurl.com/45/abc/12345/place/123456";
console.log(mystring.match(/\d+/g).sort(function (a, b) { return b.length - a.length; })[0]);
注意没有必要使用捕获组((
和)
应该被移除,因为我们不使用捕获的值。
+
量词匹配发生数量多于的模式量化(即\d
或[0-9]
这里是一位数字)。
清洁,阴凉的解决方案:) – user1665355