【问题标题】:Javascript adding variable to a regular expressionJavascript将变量添加到正则表达式
【发布时间】:2017-07-05 09:48:11
【问题描述】:

我在 Typescript 中编写了以下函数:

public searchPosts(keyword ? : string): Post[] {
  return this._posts.filter(function(post) {
    if (post.title.search(new RegExp('money', 'gi')) >= 0) {
      return post;
    }
  });
}

它工作得很好,但是我需要让它变得有点动态,这样我就可以把我的关键字变量放在 RegExp (new RegExp(keyword, 'gi')) 中,而不是硬编码的值,即钱。但是即使将“钱”作为关键字,这样做也不会返回任何东西。

关于我在这里做错了什么有什么想法吗?

【问题讨论】:

  • keyword替换'gi'? --- 嗯。
  • 为什么要退回过滤器中的帖子?我使用 ES6 (keyword = '') => this._posts.filter(post => post.title.search(new RegExp(keyword, 'gi')) >= 0) 让它工作
  • 替换无效。我要退回符合条件的帖子?
  • filter 应该返回 truefalse
  • 我相信过滤功能:Returns the elements of an array that meet the condition specified in a callback function.

标签: javascript regex typescript


【解决方案1】:

它应该是这样工作的

  var keyword = '345';
  var f = ['1234', '3456'].filter(function(post) {
    return (post.search(new RegExp(keyword, 'gi')) >= 0);
  });
  
  console.log(f);

这是你在纯 JS 中的函数

var posts = [{title: '1234'}, {title: '3456'}];

function searchPosts (keyword) {
  return posts.filter(function(post) {
    return (post.title.search(new RegExp(keyword, 'gi')) >= 0);
  });
}

console.log(searchPosts('345'));

如果这不起作用,则问题出在其他地方;]。

【讨论】:

  • public searchPosts(keyword?: string): Post[] { return this._posts.filter(function(post) { return (post.title.search(new RegExp(keyword, 'gi')) >= 0); }); } 我在这里错过了什么?
  • public searchPosts(keyword?: string): Post[] { return this._posts.filter(function(post) { return (post.title.search(new RegExp('money', 'gi')) >= 0); }); } 这给了我想要的结果,但是一旦我用关键字替换搜索字符串,它就不起作用了。甚至关键字的 console.log 也符合预期。 ://
  • 我已经编辑了我的答案。您的功能似乎还可以。正如您在我的回答中看到的那样,当您向函数提供字符串时,它会返回所需的结果,所以它工作得很好。这就是我可以帮你的。如果您在 Plunker 中提供代码,可以尝试更多。
猜你喜欢
  • 2017-10-12
  • 2020-10-22
  • 2015-08-02
  • 2012-11-26
  • 1970-01-01
  • 2012-07-05
  • 1970-01-01
  • 1970-01-01
  • 2012-01-16
相关资源
最近更新 更多