gpt4 book ai didi

javascript - 难以将正则表达式与过滤方法匹配

转载 作者:行者123 更新时间:2023-12-03 00:21:32 29 4
gpt4 key购买 nike

进行挑战,走了比提供的解决方案复杂得多的路线,但现在我想解决我偶然发现的正则表达式过滤器问题。

一切正常,直到 currentFileExt() 函数的倒数第二行。我最初计划使用 map,但在查看类似的 StackOverflow 解决方案后,我认为 .filter() 更合适。可悲的是,我似乎无法让过滤器检查我提供的正则表达式。

也许这是我的误解,但我正在使用过滤器来匹配分割 toArr 数组的每个字符串元素,如果它与正则表达式匹配,则应该对其进行过滤。不幸的是,这似乎并没有发生。

function findFileName(fileName) {
let detect = (fileName.match(/\.+/g)) ? currentFileExt() : alert("Please enter");
return detect;

function currentFileExt() {
let toArr = fileName.split('');
let fileExtArr = [];
// let validCharacter = new RegExp(/\.[a-z]+/, 'g');
let validCharacter = /\.[a-z]+/;
fileExtArr = toArr.filter( (element) => { element.match(validCharacter) });
return fileExtArr.join('');
}
}

findFileName('java.java');

最佳答案

问题之一是您的过滤器回调函数没有返回任何值。为了使用带有主体的箭头函数来做到这一点,您需要添加一个 return 关键字或更好的关键字,但只需删除主体即可。

String#match 也可能不是您正在寻找的方法,因为它返回一个匹配数组,如果没有匹配则返回 null。如果您使用RegExp#test,您将获得一个 bool 值,具体取决于字符串是否与正则表达式匹配。

所以也许以下内容可以满足您的需求:

function findFileName(fileName) {
const detect = (fileName.match(/\.+/g)) ? currentFileExt() : alert("Please enter");
return detect;

function currentFileExt() {
const toArr = fileName.split('');
const validCharacter = /\.[a-z]+/;
const fileExtArr = toArr.filter(element => validCharacter.test(element));
return fileExtArr.join('');
}
}

关于javascript - 难以将正则表达式与过滤方法匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54296579/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com