正则表达式包含变量

时间:2014-03-10 09:52:29

标签: javascript regex variables

正则表达式和变量似乎是当前的问题,但我没有找到问题的答案。

这很简单,我正在使用一个名为nedb的javascript的noSQL数据库系统。顺便说一句很整洁。 GitHub link

以下是对我们来说很重要的部分:

// Finding all planets whose name contain the substring 'ar' using a regular expression
db.find({ planet: /ar/ }, function (err, docs) {
  // docs contains Mars and Earth
});

如你所见,表达式/ ar /表示“包含子字符串ar”,这是经典的正则表达式。 我想要的是用变量替换ar(用户搜索的结果)。

Like this : 
var search = ‘ar'; //taken from an HTML form
db.find ({planet : ‘/‘ + search + ‘/‘}, fonction (err,docs) {
}

遗憾的是,这不起作用。也没有:

  var search = ‘/ar/'; 
    db.find ({planet : search}, fonction (err,docs) {
    }

你有什么想法吗?可能对你来说显而易见,但我在这个问题上失去了理智啊哈! 谢谢你们

2 个答案:

答案 0 :(得分:2)

使用RegExp构造函数:

db.find({ planet: new RegExp(yourString) }, function (err, docs) {

如果你的字符串可以是任何东西,你最好逃避它。然后查看this related answer

答案 1 :(得分:0)

你需要使用RegExp构造函数,但仅此一点是不够的(.将是“任何字符”,?表示前一个字符是可选的{{1会破坏你的正则表达式,以及所有其他常规正则表达式关键字和字符)。

你可以通过使用正在逃避它们的正则表达式转义函数(例如preg_quote from PHPJS)来避免这种情况:

/