javascript - 来自 URL 的正则表达式匹配数据在有两个匹配项时仅返回 1 个匹配项

标签 javascript arrays regex

根据我提交的URL,有两个匹配项。他们是 'en-gb' 和 'uk-ireland'

网址:https://www.myabcalphabeta.com/en-gb/destinations/uk-ireland

但是当我返回函数时,它只返回最后一个,即“uk-ireland”

我如何 catch 第一场比赛“en-gb”。我还看到循环工作正常,因为它返回了两个值。

控制台输出截图。 Screenshot of output in console.

    $(document).ready(function(){
        function getURLLocale() {
        var url = $(location).attr("href");
        var localeRegex = /^[a-z][a-z]-[a-z][a-z]/g;
        var urlBreakdown = url.split("/");
        console.log(urlBreakdown);
        var lang = "en";
        var country = "gb";

        for(var i = 0; i < urlBreakdown.length; i++) {
            if(urlBreakdown[i].match(localeRegex)) {
                lang = urlBreakdown[i].split("-")[0];
                country = urlBreakdown[i].split("-")[1];
                console.log(lang+ "\n");
            };
        }

        return([lang, country]);
    } // End function getURLLocale()
    console.log(getURLLocale());
})

最佳答案

我认为你可以这样做:

const url = `https://www.myabcalphabeta.com/en-gb/destinations/uk-ireland`

const getUrlData = url => {
  const en = url.match(/\ben-?\w*\b/)
  const uk = url.match(/\buk-?\w*\b/)
  const result = []
  if (en) result.push(en[0])
  if (uk) result.push(uk[0])
  return result
}

console.log(getUrlData(url))

或者这个

const url = `https://www.myabcalphabeta.com/en-gb/destinations/uk-ireland`

const getUrlData = url => {
  const regex = /\b[a-z]{2}-[a-z]*\b/g
  const result = []
  let temp

  while (temp = regex.exec(url)) {
    result.push(temp[0])
  }
  return result
}
console.log(getUrlData(url))

这会选择以 2 [a-z] 开头的任何部分,然后必须开始单词 - 以及所有 [a-z] 直到不是单词

关于javascript - 来自 URL 的正则表达式匹配数据在有两个匹配项时仅返回 1 个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42642369/

相关文章:

javascript - 如何将 iframe-resizer 与 React JS 页面作为内容一起使用?

javascript - 使用开关的功能不返回所需的值

javascript - 为什么 goog.crypt.base64.decodeStringToByteArray(string) 在这里返回无效的字节数组?

jquery - 随机音频onmouseover jQuery不起作用

java - 带用户输入的插入排序 double 组 - JAVA

.net - 使用正则表达式进行搜索和替换(包括lookbehinds)在 VS2017 中不起作用

javascript - 如何用lodash改进这个例程?

php - 使用循环 PHP、对角线检查增加 IF 语句中的条件

c - 在 C 中解析 iCalendar 文件

javascript - 比较和索引 Javascript 数组中的正则表达式