gpt4 book ai didi

javascript - 在 JavaScript 中使用谓词函数进行匹配

转载 作者:行者123 更新时间:2023-12-02 19:01:14 26 4
gpt4 key购买 nike

注意:这是我在 StackOverflow 上的第一个问题(尽管我之前已经回答过)。如果您认为我没有澄清某些问题,请随时在评论中告诉我。

您可能听说过 JavaScript 中的 String.prototype.match() 函数,该函数在字符串中搜索与正则表达式的匹配项,并将匹配项作为 Array 对象返回。这是一个例子:

var str = "(list 1 2 foo (list nice 3 56 989 asdasdas))"
console.log(str.match(/\d+/g)) //=>["1", "2", "3", "56", "989"]

但是,我需要一个类似匹配的方法,在 JavaScript 中输入函数。该输入函数将接受原始字符串的子字符串,并输出一个 bool 值,告诉该子字符串是否有效匹配。这是预期行为的示例

    function standardFunc(substr) {
return parseFloat(substr) !== NaN;
}

var str = "(list 1 2 foo (list nice 3 56 989 asdasdas))"
console.log(str.match(standardFunc)) //=>["1", "2", "3", "56", "989"]

有没有一种简单的方法可以在 JavaScript 中模拟这种行为?

最佳答案

如果您可以设置或以某种方式识别匹配子字符串类型的边界,那么这是可能的。例如,在这里,每个匹配看起来都在单词边界处开始和结束:

function standardFunc(str) {
return !Number.isNaN(parseFloat(str))
}

const str = "(list 1 2 foo (list nice 3 56 989 asdasdas))";
for (const match of str.matchAll(/\b.+?\b/g)) {
if (standardFunc(match[0])) {
console.log(match[0]);
}
}

请注意,您需要使用 Number.isNaN 而不是使用 !== NaN

如果您不是在寻找通用解决方案,而只是寻找此特定问题的解决方案,请仅使用正则表达式来解决此问题。匹配数字后跟一个可选的小数点和更多数字:

function standardFunc(str) {
return !Number.isNaN(parseFloat(str))
}

const str = "123.03 (list 1 2 foo (list nice 3 56 989 asdasdas))";
console.log(
str.match(/\d+(?:\.\d+)?/g)
);

关于javascript - 在 JavaScript 中使用谓词函数进行匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65545698/

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