正则表达式和变量似乎是当前的问题,但我没有找到问题的答案。
这很简单,我正在使用一个名为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) {
}
你有什么想法吗?可能对你来说显而易见,但我在这个问题上失去了理智啊哈! 谢谢你们
答案 0 :(得分:2)
使用RegExp构造函数:
db.find({ planet: new RegExp(yourString) }, function (err, docs) {
如果你的字符串可以是任何东西,你最好逃避它。然后查看this related answer。
答案 1 :(得分:0)
你需要使用RegExp
构造函数,但仅此一点是不够的(.
将是“任何字符”,?
表示前一个字符是可选的{{1会破坏你的正则表达式,以及所有其他常规正则表达式关键字和字符)。
你可以通过使用正在逃避它们的正则表达式转义函数(例如preg_quote
from PHPJS)来避免这种情况:
/