在任意字符串中选择4个最后一位数字

时间:2018-08-01 10:22:49

标签: javascript arrays

我有一个由各种字符串组成的数组,我需要从每个字符串中选择最后4个未分开的数字。

var example = [“ eg3322-3748”,“ eg3322-3749_ABCD”,“ eg3750_5GHJ”];

期望的结果应给出以下结果:

var example = [“ 3748”,“ 3749”,“ 3750”]

谢谢! :)

3 个答案:

答案 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)

逻辑:

  • 根据给定的数据(很明显),您正在寻找一批字母数字/数字字符,希望获得最后4位数字。
  • 因此您可以创建一个与所有此类组匹配的正则表达式,并返回最后一个。
  • 然后,从这最后一组中,仅提取最后4个字符和Ta-da !!!

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)”可以工作。