首页 > 解决方案 > 如何在字符串中搜索子字符串并返回该字符串

问题描述

我正在尝试将以下逻辑添加到 GTM 中的以下自定义 Javascript 变量中:“查找字符串是否包含此单词,并返回该单词”

function() {
  var el = {{Click Element}};
  el = el.parentElement;
  var classes = el.className;

  return classes ;
}

在上面的代码中,classes 变量返回以下字符串:

'wp-block-button jungle-cta tiger-animal'

我正在尝试执行以下操作:如果字符串包含“tiger”,则返回“tiger-animal”,仅此而已。

我在同一个登录页面上的不同 CTA 上应用此功能。每个 CTA 都有一个 Tiger 常量作为类名的一部分。因此,一个 CTA 是“tiger-animal”,另一个是“tiger-something”、“tiger-word”等。我正在寻找与“tiger-”之后的内容无关的逻辑。如果找到老虎,则解析包含老虎的单词并将其返回。

更新:

下面的作品现在!谢谢你。

function() {
  var el = {{Click Element}};
  el = el.parentElement;
  var classes = el.className;
  var regex = /tiger-[a-z]*/g;
  var found = classes.match(regex);
  return found[0]
}

标签: javascriptgoogle-tag-manager

解决方案


在此处更新代码以匹配您在评论中提到的内容。如果匹配,它现在返回字符串,否则返回未定义:

function checkIfTiger(input) {
  const regex = /tiger-[a-z]*/g;
  const found = input.match(regex)
  return found !== null && found[0]
}

checkIfTiger("fsd adfj adkfj tiger-adsf dfadf")
// returns "tiger-asdf"

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match

如何使用 .includes 属性。例如:

let a = 'wp-block-button jungle-cta tiger-animal'

function checkIfTiger() {
  if(a.includes("tiger")) {
    return "tiger-animal"
  }
}

checkIfTiger()

实际上,这是一个代码较少的版本。如果您正在检查的任何内容中都存在“tiger”,则返回“tiger-animal”,否则返回false:

let a = 'wp-block-button jungle-cta tiger-animal'

function checkIfTiger() {
  return a.includes("tiger") && "tiger-animal"
}

checkIfTiger()

推荐阅读