Tag: expression

在Express中将数组传递给Jade / Pug路由

我是新来expression和帕格所以原谅我,如果这是一个noob的问题,但如何将我创build的数组在一个函数的路线,将呈现帕格模板。 我最终想循环数组,并将其呈现为一个表格。 我的代码 – 首先我使用lodash map方法从一个文件接收的数据中创build数组。 *编辑 – 添加完整的代码结构 – fs.readFile(file, 'utf8', function (err, data) { if (err) { console.log('Error: ' + err); return; } var data = JSON.parse(data); var newEventList = data.events.map(events => ({ id: events.id , name: events.name , venue: events.place.name , address: events.place.location.street + " " + events.place.location.city + " " + […]

正则expression式从CSSselect器string中提取HTML5类

我正在从磁盘读取CSS文件作为string。 我的目标是提取与以下特定数据属性配对的HTML类: .foo[data-my-attr] 数据属性是独一无二的,所以我不必担心遍历CSS AST。 我可以简单地使用这样的正则expression式: (\.\S+)+\[data-my-attr\] 这已经可以工作了,但是\S+在select器中匹配一个HTML类是一个不错的方法。 它将包括各种组合器,伪类,假select器等。 我尝试构build正则expression式的白名单版本,例如(\w|-)+ ,但类名称的HTML5规范是非常宽容的。 不可避免的是,我错过了某些字符或者包含不正确的字符。 什么正则expression式可以用来从CSSselect器string中提取HTML5类 ? 我正在使用Node,即正则expression式的JavaScript风格。 UPD1 一些例子: .foo[data-my-attr] – 应该匹配.foo .foo>span[data-my-attr] – 不应该匹配 .I_f%⌘ing_♥_HTML5[data-my-attr] – 应该匹配.I_f%⌘ing_♥_HTML5 这个问题存在,因为我无法想到每个可能的有效的HTML5类。 我需要一个基于令人惊讶的模糊的HTML5类规范的正则expression式: 3.2.5.7类属性 该属性(如果指定)必须具有一个值,该值是一组空格分隔的标记,表示该元素所属的各个类。 HTML元素分配给它的类包含所有在class属性的值在空间上分割时返回的类。 (重复被忽略。) 对于作者可以在类属性中使用的标记没有额外的限制,但鼓励作者使用描述内容本质的值,而不是描述所需内容表示的值。 显然,一个类不应该包含空格和字符,如+>:()[]=~因为它们是CSSselect器语法的一部分。

从HTMLstring中parsing所有URL的最好方法是什么?

在接下来的几个星期里,我正在编写Node的networking爬虫。 在我的原型中,我使用jsdom来查看页面,然后search所有锚点并将href添加到我的爬行列表中。 我意识到,如果我只是从源代码parsing任何URL(例如,文本中的URL),我可能会发现更多的URL。 我想知道是否有任何好的JavaScript库在那里使用正则expression式或其他。 作为一个方面说明:这是一个坏主意? 更新: 虽然我最初select克里斯的答案下面,我有点触发快乐,事实certificate。 不幸的是我没有结束使用node.io. 我发现它有点臃肿,并没有真正关注我正在尝试做什么。 目前,我正在使用soupselect + htmlparser获取页面上任何锚点的href值,并且我很高兴现在使用这个解决scheme。

jQuery ajax在POST上失败express.js服务器

主要的问题似乎是 ,jQuery在AJAX请求中发送以下头文件: POST http://localhost:3000/enter HTTP/1.1 ,而应该是 POST /enter HTTP/1.1 更详细地说,这是我的服务器和客户端的设置以及确切的请求和响应: 我有一个非常简单的设置与服务器上的express.js和客户端上的jQuery 。 我需要的只是一个POST请求到服务器。 这或多或less是服务器的外观: app.post('/enter', function(req, res){ console.log(req.body) res.json({flag: true}) }) 以下是jQuery的样子: $.ajax( { url: '/enter' , type: 'POST' , cache: false , data: { field1: 1, field2: 2 } , success: function(data){ alert('Success!') } , error: function(jqXHR, textStatus, err){ alert('text status '+textStatus+', err '+err) […]

Express.js:对象#<IncomingMessage>没有方法“调用”

安装Express.js后,我在节点上写了这个: var express = require('express'), app =express.createServer(); app.configure(function(){ app.use(express.methodOverride()); app.use(express.bodyParser()); app.use(express.router); }); app.get('/', function(req, res){ res.send('hola mundo'); }); app.listen(3020); console.log('Hola Mundo'); 当我启动应用程序时,我可以看到“Hola Mundo”的消息,但是当我提出请求时,我收到了这个消息: TypeError: Object #<IncomingMessage> has no method 'call' at Object.router [as handle] (/home/alumno/Escritorio/nodejs/node_modules/express/node_modules/connect/lib/middleware/router.js:96:6) at next (/home/alumno/Escritorio/nodejs/node_modules/express/node_modules/connect/lib/http.js:203:15) at Object.bodyParser [as handle] (/home/alumno/Escritorio/nodejs/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js:88:61) at next (/home/alumno/Escritorio/nodejs/node_modules/express/node_modules/connect/lib/http.js:203:15) at Object.methodOverride [as handle] (/home/alumno/Escritorio/nodejs/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js:35:5) at next (/home/alumno/Escritorio/nodejs/node_modules/express/node_modules/connect/lib/http.js:203:15) at […]

在param前提下命名的路由

如果在url中设置:slug参数,我希望使用路由参数前提条件通过“slug”获取投资组合项目。 然而,我也想使用RegExp来匹配URI。 节点中是否支持命名的捕获? 我可以给([-\w]+)捕获一个名字,所以子弹前提条件被解雇? app.param('slug', function(req, res, next, slug){ // get thing from database by slug }) //app.get('/work/view/:slug', function(req, res){ app.get(/^\/work\/view\/([-\w]+)/, function(req, res){ // render view })

在Express.js中,我将如何编写一个路由/正则expression式来捕获所有美国州?

目前我的状态如下所示: var states = 'AL|AK|AR|AZ|CA|CO|CT|DC|DE|FL|GA|HI|IA|ID|IL…'; 我想捕捉 mydomain.com/CA/more-stuff 分成两个独立的参数。 第一个与国家信息,第二个与附加。 我知道如何获得更多的信息: app.get('/' ??? + '/:additional', …); 我如何获取状态信息?

使用Expressjs作为跨域Ajax调用的代理

我正在开发一个完全基于外部API的网站。 我没有任何服务器端的逻辑。 所有的数据将从外部API获取。 后端服务器主要用于资产pipe理和路由。 已经决定将nodejs与expressjs一起运行在后端。 我想知道在expressjs路由中需要做什么修改(作为代理),从浏览器到相应的站点的所有跨域ajax API调用,并将json数据路由回浏览器?

寻找更新的节点Facebook模板

所以我一直在网上寻找一个好的node.js的Facebook模板,但我真的可以find这个https://github.com/heroku/facebook-template-nodejs 。 这是体面的,但它使用快车2.4.6和节点0.6.x. 我想跟上标准,在express 3.x和node 0.8.x下工作,但是如果我更新package.json我不能再使用与heroku模板一起使用的dynamic助手,主要是这些function: app.dynamicHelpers({ 'host': function(req, res) { return req.headers['host']; }, 'scheme': function(req, res) { return req.headers['x-forwarded-proto'] || 'http'; }, 'url': function(req, res) { return function(path) { return app.dynamicViewHelpers.scheme(req, res) + app.dynamicViewHelpers.url_no_scheme(req, res)(path); } }, 'url_no_scheme': function(req, res) { return function(path) { return '://' + app.dynamicViewHelpers.host(req, res) + (path || ''); } […]

我不明白为什么我的nodejs / JavaScript的正则expression式不工作

我有一些简单的文字,我试图parsing: total 4.0K -rw-rw-r– 1 346 Mar 1 08:50 save_1 -rw-rw-r– 1 0 Feb 28 17:28 save_2 -rw-rw-r– 1 0 Feb 28 17:28 save_3 我有一个正则expression式,我已经testing了不同的正则expression式testing网站: \w{3}\s+\d{1,2}\s\d{2}\:\d{2}\s\w{4}\_\d 我正在尝试将示例文本作为Node.js应用程序的以下函数中的input,并返回一个对象或数组,其中包含3个不同的匹配项,从月份到行尾。 function parse(str) { var regex = new RegExp("\w{3}\s+\d{1,2}\s\d{2}\:\d{2}\s\w{4}\_\d"); return regex.test(str); //return str.match(regex); } 我不明白为什么.test()的布尔值是false,而.match()的对象是null。 任何帮助将不胜感激。