当前位置: 首页 > 面试题库 >

ES6使用正则表达式过滤数组

杜弘光
2023-03-14
问题内容

我正在尝试过滤包含一堆URL的数组。我需要返回仅包含“联系人”一词的网址。

例如,有一个链接 https://www.example.com/v1/contact-us/ca

这应该从过滤器中返回。

我尝试了这个:

    const regex = new RegExp("/\bcontact\b", 'g' )
    sites.links.filter((val) => {

     console.log(regex.test(val.href))

    })

当我知道有一个包含“联系人”一词的域时,它目前仅通过所有域发送回false。


问题答案:

首先,new RegExp('/\bcontact\b', 'g');它等于/\/@contact@/g哪里@是退格字符(ASCII
08)…显然不是您想要的

所以,你会做的new RegExp('/\\bcontact\\b', 'g');-这相当于/\/\bcontact\b/g

但是,\\b之后/是多余的

所以…到 /\/contact\b/g

string.match在这里使用regex.test被滥用。以下是说明

var sites = { 
    links: [
        {href: 'https://www.example.com/v1/contact-us/ca'},
        {href: 'https://www.example.com/v1/contact-us/au'},
        {href: 'https://www.example.com/v1/contact-us/us'},
        {href: 'https://www.example.com/v1/dontcontact-us/us'}
    ]
};

const regex = new RegExp('/contact\\b', 'g');
const matchedSites = sites.links.filter(({href}) => href.match(regex));
console.log(matchedSites);

下一个问题是在regexp.testwith
g标志中多次使用ONE正则表达式。每次调用,它将目光从未来indexOf先前FOUND子,并在同一类型的字符串的连续调用,它基本上会返回truefalsetruefalse

如果要使用regex.test,则不要重复使用相同的正则表达式,除非您知道这样做的后果或不使用g标志(此处不需要)

var sites = {

    links: [

        {href: 'https://www.example.com/v1/contact-us/ca'},

        {href: 'https://www.example.com/v1/contact-us/au'},

        {href: 'https://www.example.com/v1/contact-us/us'},

        {href: 'https://www.example.com/v1/dontcontact-us/us'}

    ]

};



const regex = new RegExp('/contact\\b', 'g');

const correctRegex = new RegExp('/contact\\b');



const matchedSitesFailed = sites.links.filter(({href}) => regex.test(href));

const matchedSitesSuccess = sites.links.filter(({href}) => new RegExp('/contact\\b', 'g').test(href));

const matchedSitesSuccess2 = sites.links.filter(({href}) => correctRegex.test(href));



console.log('failed returns:', matchedSitesFailed.length);

console.log('success returns:', matchedSitesSuccess.length);

console.log('success returns 2:', matchedSitesSuccess2.length);


 类似资料:
  • 本文向大家介绍MYSQL使用正则表达式过滤数据,包括了MYSQL使用正则表达式过滤数据的使用技巧和注意事项,需要的朋友参考一下 一、正则与LIKE的区别  Mysql的正则表达式仅仅使SQL语言的一个子集,可以匹配基本的字符、字符串。 例如:select * from wp_posts where post_name REGEXP'hello',可以检索出列post_name中所有包含hello的

  • 问题内容: 我在为ElasticSearch Regexp Filter正确表达正则表达式时遇到问题。我正在尝试匹配url字段中“ info-for / media”中的任何内容,例如http://mydomain.co.uk/info-for/media/press- release-1 。为了尝试正确使用我现在使用的正则表达式,但这最终将与用户的查询字符串一起使用。 POST到localhos

  • 问题内容: 我想在Java中构建一个正则表达式,该正则表达式将在FilenameFilter中传递以过滤目录中的文件。 问题是我无法理解正则表达式“思维模型”的问题:) 这是我用来选择要排除的文件的正则表达式 (((ABC | XYZ))+ \ w * Test.xml 我想做的是选择所有以Test.xml结尾但不以ABC或XYZ开头的文件。 您能否添加任何可以帮助我应对正则表达式的资源。 谢谢

  • 问题内容: 我的代码如下所示: 它返回一个列表,其中仅包含与匹配的条目。我想知道是否有一个内置的功能,类似于: 问题答案: 除了Konstantin的回答:Java 8 通过对该类添加了支持,该类在内部调用: 太棒了!

  • 问题内容: 我正在尝试使用匹配其id属性的正则表达式过滤html表。我究竟做错了什么?我正在尝试实现的代码: 我得到的错误:preg_match期望第二个参数是一个字符串,给定数组。 问题答案: 根据DOM(具有命名空间等),属性仍然是一个复杂的元素。采用: 现在,我们需要一个布尔值返回,所以: 顺便说一句:对于更复杂的问题,您当然可以偷偷检查一下这是怎么回事: 很遗憾,我们没有可用的XPATH

  • 行动时刻 - 使用正则表达式 Unlang允许在条件检查中进行正则表达式计算。这些通常是Posix正则表达式。运算符=〜和!〜与正则表达式相关联。为了简单的概念证明,我们将修改上一个练习: 1.编辑FreeRADIUS配置目录下的sites-available / default虚拟服务器,并在该部分顶部的post-auth部分中添加以下内容: if(request:Framed-Protocol