Articles of expression

Express.js:调用内部服务

我对node.js,express.js和REST API有点新。 这是我的问题: 我需要从我的数据库(mongoDB,如果相关的话)加载用户信息在多个情况下。 这种情况下的最佳做法是什么? 1)直接从数据库中加载: index.js: db.collection('usercollection').findOne({email: req.user.email}, function(err, result){… 2)从另一个从数据库读取的路由调用服务: users.js: /* GET user by email */ router.get('/:email', function(req, res) { var db = req.db; var email = req.params.email; db.collection('usercollection').findOne({email: email}, function(err, result) { if (err) throw err; res.json(result); }); }); index.js: //呼叫用户/电子邮件/ emailParameterURL 3)这两个都没有? 谢谢你的时间

正则expression式只返回第一个匹配?

我有一个包含很多行的文本文件,我正在过滤它们来查找我需要的内容,例如: HBIJB LX 0359 25Aug14 07:37 这是我的正则expression式: /(?:(HB…)\s(LX|WK)\s((?:[0-9]){1,4})\s((?:[0-9]){2}(?:[AZ,az]){3}(?:[0-9]){2})\s((?:[0-9]){2}:(?:[0-9]){2}))/g 我的问题是它只返回文件中的第一个匹配项: [ 'HBIJB LX 0359 25Aug14 07:37', 'HBIJB', 'LX', '0359', '25Aug14', '07:37', index: 323, input: /* Omitted */ ] 答案是完美的,但是为什么我只能得到第一个匹配,即使我使用了全局/g标志? 编辑: 我正在使用NodeJs,而脚本是没有什么奇特的: var regex = /(?:(HB…)\s(LX|WK)\s((?:[0-9]){1,4})\s((?:[0-9]){2}(?:[AZ,az]){3}(?:[0-9]){2})\s((?:[0-9]){2}:(?:[0-9]){2}))/g console.log(regex.exec(data)); 编辑2: 这里是我需要过滤的内容的外推。 Lorem Ipsum Ø HBIJB LX 0359 25Aug14 07:37 HBIPV LX 2092 25Aug14 09:09 Lorem Ø HBIJB LX 1404 […]

async.series:可变数量的callback

我正在使用Node.js(Express)和MongoDB(mongooseJS)。 我想要创buildasynchronous函数(一个接一个地,以正确的顺序查询数据库); 问题是:如何创build可变数量的async.series函数,如下所示: var supply = [0]; async.series([ function(callback) { Model.find({ color: user.color[supply] }).exec(callback); }, ],function(err, results){ res.send('Chosen colors: ' + results); }); 如果 – 可以说 – 可变电源= [0,1,2], 那么callback函数将被放置三倍,0,1和2放置在那里: var supply = [0, 1, 2]; async.series([ function(callback) { Model.find({ color: user.color[supply] }).exec(callback); // supply = 0 }, function(callback) { Model.find({ color: user.color[supply] }).exec(callback); // […]

如何防止使用variables时切换正则expression式testing?

我只注意到以下奇怪的行为(无论是在浏览器和nodejs中 : > a = /^\/foo/g /^\/foo/g > a.test("/foo") true > a.test("/foo") false > a.test("/foo") true > a.test("/foo") false > a.test("/foo") true 我们这里有什么疯狂的科学? 我怎样才能防止这种行为? 我只想要一个正则expression式variables,检查一个string是否与全局匹配。 文档页面似乎没有带来一些光线…我真的很感激链接到文档参考。

replace为JavaScript中的单个反斜杠?

我正在使用Node.js创build一个乳胶模板系统。 作为这个系统的一部分,我需要通过给它们加一个反斜杠,来转义任何带有特殊含义的字符。 我读过双反斜线用来插入文字反斜线: > var input = "hello & 100%" > input.replace(/([&%$#_{}])/g, "\\$1") 'hello \\& 100\\%' 不。 我也读过,因为它是在一个string内,我需要双重逃避反斜杠: > input.replace(/([&%$#_{}])/g, "\\\\$1") 'hello \\\\& 100\\\\%' 不。 而只使用一个反斜杠也不会这样做: > input.replace(/([&%$#_{}])/g, "\$1") 'hello & 100%' 那么我该如何使用replace()插入一个反斜杠?

字符类\ w不工作?

我在Node中做下面的正则expression式: var checkPath = '^\/path\/([\w]+)\/messages$'; var path = '/path/54946fde030ba8cc5471efc9/messages'; var match = path.match(checkPath); 这似乎并不奏效。 但是,当我这样做: var checkPath = '^\/path\/([0-9a-z]+)\/messages$'; var path = '/path/54946fde030ba8cc5471efc9/messages'; var match = path.match(checkPath); 这似乎工作。 有什么不同?

$ regex与find()和update()mongoose的工作方式不同

我有以下正则expression式查找文本片段中的链接。 var searchQuery = /(^|\s|\n|>)(ftp|http[s]?):\/\/.*/gm; 当我在find()中使用这个时,我得到11个匹配: Table.find({ text : { $regex: searchQuery, $options: 'xi' }}) 但是,当我用update(),我只得到1匹配: Table.update({ text : { $regex: searchQuery, $options: 'xi' }}, {$set: {tags: 'bookmark'}}) 有人能指出正则expression式的用法(如果有的话)有什么区别。

使用引号将正文匹配时,正则expression式不会省略引号

我试图在node.js中用正则expression式在双引号内进行非贪婪的捕获。 大部分的Google结果都说我应该使用下面的一个: "(.*?)" "([^"]*)" 我试了两个,但我的代码不会删除引号。 我的代码看起来如此: var testStr = '|> "Song" by "Artist" on "Album" <3'; var regex = /"([^"]*)"/g; // or /"(.*?)"/g var info = testStr.match(regex); if (info){ console.dir(info[0]); console.dir(info[1]); console.dir(info[2]); } 我的输出是这样的: '"Song"' '"Artist"' '"Album"' 我究竟做错了什么?

Express 4 session TypeError:对象不是一个函数

我正在用Express 4学习nodejs来开发一个web应用程序,并且关注一些博客,当尝试启动项目时显示这个错误: [nodetest1]# npm start nodetest1@0.0.0 start /root/node_proyects/nodetest1 node ./bin/www /root/node_proyects/nodetest1/app.js:64 app.use(session({secret: 'blablabla'})); ^ TypeError: object is not a function at Object.<anonymous> (/root/node_proyects/nodetest1/app.js:64:9) at Module._compile (module.js:460:26) at Object.Module._extensions..js (module.js:478:10) at Module.load (module.js:355:32) at Function.Module._load (module.js:310:12) at Module.require (module.js:365:17) at require (module.js:384:17) at Object.<anonymous> (/root/node_proyects/nodetest1/bin/www:7:11) at Module._compile (module.js:460:26) at Object.Module._extensions..js (module.js:478:10) at Module.load (module.js:355:32) at Function.Module._load […]

获取匹配string后的数字和字符

我试图得到匹配的string后的值: Empregados/Avulsos 2.912,30 Empregados/Avulsos 7.310,06 有时在值中有一个string。 这是正则expression式可能吗? 我正在尝试像这样: var match = data.replace(/\s\s+/g, ' '); var match_two = match.match([\n\r][ \t]*Retenção Lei 9.711/98[ \t]*([^\n\r]*)); console.log(match_two); 首先我用一个replace所有的空格。 然后我试着得到'Retenção Lei 9.711/98' 。 但是输出是'2' 。 我想做一个正则expression式,在这些例子中总是会得到下一个单词或数字: Hour: get 12:12 Data: get 24/08 Solicitação get 2.912,30 Empregados/Avulsos get 1.452,00 Palavras separadas get 2.912,30 话: 'Solicitação', 'Retention xxx 9.999/99' 'Compensation' 'TET': 'VALUE […]