我有一个由各种字符串组成的数组,我需要从每个字符串中选择最后4个未分开的数字。
var example = [“ eg3322-3748”,“ eg3322-3749_ABCD”,“ eg3750_5GHJ”];
期望的结果应给出以下结果:
var example = [“ 3748”,“ 3749”,“ 3750”]
谢谢! :)
答案 0 :(得分:1)
这应该做到:
const input = ['eg3322-3748', 'eg3322-3749_ABCD', 'eg3750_5GHJ'];
const result = input.map(item =>
item
.split('').reverse().join('') // Reverse string
.match(/\d{4}/)[0] // Find first 4 consecutive digits
.split('').reverse().join('') // Reverse matches back
);
console.log(result);
PS:下次您提问题时,请显示您的尝试。谢谢!
编辑:如果任何字符串不包含连续的4位数字,则会产生错误。您可以通过向match
添加一个后备广告(例如,使用['']
来轻松解决此问题,然后它将返回)。
答案 1 :(得分:1)
var example = ["eg3322-3748", "eg3322-3749_ABCD", "eg3750_5GHJ"];
var regex = /([a-z]*\d{4,})/g;
var output = example.map((str) => {
const match = str.match(regex).pop();
return match.substr(-4);
});
console.log(output)
答案 2 :(得分:0)
您可以使用.substr()函数对字符串的长度进行切片。也许“ example(i).substr(example(i).length-4)”可以工作。