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