首页 > 解决方案 > 创建新的 RegExp 对象从变量中删除一个字符

问题描述

我需要在每个字符串中隔离一个单词,并且该单词是基于查询参数的变量。用户搜索一个词,然后我过滤 API 结果以查找仅包含该词的歌曲(例如,如果我搜索“帮助”,则“帮助正在路上”很好,但“无助”不是) .

当我之前硬编码一个搜索词时,它工作得很好:

const songRegex = /\bhelp\b/g;

我在控制台记录了搜索词 + 从 API 返回的歌曲标题,然后在下面记录了使用正则表达式测试歌曲标题的结果:

在此处输入图像描述

要使用变量,我发现我应该创建一个new RegExp对象。当前(失败的)正则表达式如下:

const songRegex = new RegExp("\b" + searchTerm + "\b", "g");

这里我也在记录正则表达式本身,无论我输入什么,搜索词的最后一个字符都将被删除。“帮助”->“帮助”;“帮助”->“帮助”。

在此处输入图像描述

完整代码在这里:

const filteredSongsArray = [];
songsJSON.tracks.items.map((obj) => {
  const songTitle = obj.name.toLowerCase();
  const searchTerm = context.params.word.toLowerCase();

  const songRegex = new RegExp("\b" + searchTerm + "\b", "g"); // creating the regex
  const regexTest = songRegex.test(songTitle);
  
  console.log(searchTerm + " + " + songTitle);
  console.log(regexTest);

  if (obj.explicit === true || regexTest === false) {
    return;
  } else {
    filteredSongsArray.push(obj);
    return;
  }
});

标签: javascriptregex

解决方案


推荐阅读