使用正则表达式检查数组条目

Check Array Entries with Regex

本文关键字:数组 检查 正则表达式      更新时间:2023-09-26

我有一个包含一个或多个条目的数组。每一个都是一个字符串(通过 Firefox SDK 打开的标签页中的网址列表)。我想检查某些选项卡中是否已经打开了特定的 url(到目前为止没有什么特别的)。

我的问题是,选项卡列表中的 url 可以有四个不同的四。例如:

我想在表格列表中找到的网址:

https://cmsr-author.de/cf#/content/test/de.html

但网址也可以看起来像这样:

https://cmsr-author.de/content/test/de.html
https://cmsr-author.de/test/de.html
https://cmsr-author.de/cf#/test/de.html

当然,url的最后一部分(在/test/...之后)总是不同的。如果我无法在选项卡列表中找到四个 url 之一,我想调用其他操作。

到目前为止,我的解决方案是构建一些if链:

if (res !== url1) {
  if (res !== url2) {
    if ...

但我想一定有更优雅的方式。也许通过正则表达式?我已经有一个捕获来捕捉第一部分(https://cmsr-author.ws 保持不变......)与它四种形式。但我不知道如何暗示这一点。

var urls = ["https://cmsr-author.de/content/test/de.html","https://cmsr-author.de/test/de.html","https://cmsr-author.de/cf#/test/de.html"]
var filtered = urls.filter(function(url) 
{ 
       return url.indexOf("cf#") > -1 && url.endsWith("/test/de.html")
})
var contains = filtered.length > 0
console.log(contains)

如果你想使用正则表达式,你可以通过在中间部分使用组来做到这一点,这里详细解释:http://www.regular-expressions.info/refcapture.html

实际上,您的正则表达式看起来像这样:

https:'/'/cmsr-author'.de'/(content|...|...)'/de'.html

哪里。。。必须替换为 URL 的中间部分,这些部分不同。请注意 |是"或"用于在组内提供多种可能性。字符/和 。必须转义,因为它们在正则表达式中具有特殊角色。

我希望这有所帮助!

我的英语不好,不完全明白你的意思,按照我的想法,你应该需要一个正则表达式,只能匹配第一个。如果我错了,请@我。

我希望这有所帮助!

var reg = /^https:'/'/cmsr'-author'.de'/cf#'/(?:'w+'/)+test'/de'.html$/gi;
var str1 = "https://cmsr-author.de/cf#/content/test/de.html";
var str2 = "https://cmsr-author.de/content/test/de.html";
var str3 = "https://cmsr-author.de/test/de.html";
var str4 = "https://cmsr-author.de/cf#/test/de.html";
console.log(reg.test(str1));
console.log(reg.test(str2));
console.log(reg.test(str3));
console.log(reg.test(str4));