带数组和元素的正则表达式(Js)

时间:2018-04-24 03:26:24

标签: javascript arrays regex integer elements

语言是JS

假设我们在一个带有其他字母(例如1a或-2d)的字符串中有一个充满正负整数的数组,问题是如何使用正则表达式调用所有启动或包含正整数的字符串? 我是regexs的新手,从我学到的东西开始,我尝试使用/ ^ [0-9] /。tes ......,但它没有用,所以,你认为其他任何解决方案都可能工作?

2 个答案:

答案 0 :(得分:0)

试试这个:

function positiveElements(arr) {

    //write your RegEx
    let reEx = new RegExp(/^\d+\w*$/);

    //return the filtered array
    return arr.reduce((p,c) => {
        //push the element only if it passes the RegEx test!
        if(reEx.test(c)) p.push(c);
        return p;
    }, []);
}

//sample test
let arr = ["1a", "-3d", "4k", "-7e", "-100f", "24c", "1945y"]
positiveElements(arr);

//Output
// ["1a", "4k", "24c", "1945y"]

答案 1 :(得分:0)

由于正数是大于0的数字。我们可以检查字符串是否以数字开头,并且它不是0.

使用Array.filter()。对于每个字符串,测试它是否以1-9之间的数字开头,因为整数不会以0开头。



const getPositives = (arr) => 
  // the string should start with a number between 1 to 9
  arr.filter((s) => /^[1-9]/.test(s));

const arr = ["1a", "-3d", "4k", "-7e", "-100f", "24c", "1945y"]
const result = getPositives(arr);

console.log(result);




如果您的字符串的数字以0开头,我们将模式更改为:



const getPositives = (arr) =>
  // the string can start with a sequence of 0s, but afterwards there should be a number between 1 to 9
  arr.filter((s) => /^0*[1-9]/.test(s));

const arr = ["1a", "-3d", "4k", "-7e", "-100f", "24c", "1945y"]
const result = getPositives(arr);

console.log(result);