Articles of regex

如何检查一个string是否与node.js中的任何一个正则expression式匹配?

我试图有效地检查一个string是否匹配任何正则expression式的数组,并在第一次遇到的匹配返回true(打破正则expression式的迭代) 我目前的代码: _.forEach(self._connectedClients, function(client) { if (client.authenticated) { var interested = _.forEach(client.interests, function(interest) { if (evt.event_type.search(interest) != -1) { return true; } }); if (interested) { self._sendJSON(client.socket, data); } } }); 兴趣是一系列正则expression式。 有什么build议么? 提前致谢

RegEx最小化CSS

我有一个海峡转发聚合器/最小化/ cacher我写在node.js。 现在工作得很好。 不过,我想知道是否有任何方法来改善我的最小化正则expression式调用。 有些评论不是完全从CSS中分离出来的,我注意到其他几个打嗝。 另外,考虑到我的能力与正则expression式,我可能能够做到这一点在一半的电话。 🙂 任何build议将不胜感激。 谢谢。 function minimizeData( _content ) { var content = _content; content = content.replace( /(\/\*.*\*\/)|(\n|\r)+|\t*/g, '' ); content = content.replace( /\s{2,}/g, ' ' ); content = content.replace( /(\s)*:(\s)*/g, ':' ); content = content.replace( /(\s)+\./g, ' .' ); content = content.replace( /(\s|\n|\r)*\{(\s|\n|\r)*/g, '{' ); content = content.replace( /(\s|\n|\r)*\}(\s|\n|\r)*/g, '}' […]

为什么这个代码卡住node.js – 在Javascript上的错误?

我试图运行这个正则expression式,但它卡住了我的控制台。 为什么? var str = "Шедевры православной музыки – 20 золотых православных песен"; str.match(/^(([\u00C0-\u1FFF\u2C00-\uD7FF]+[^az\u00C0-\u1FFF\u2C00-\uD7FF]*)+) [az]+[^\u00C0-\u1FFF\u2C00-\uD7FF]*$/i);

正则expression式parsingCSS @media查询(和其他嵌套select器)

我正在使用正则expression式来parsingCSS文件的节点脚本,它完美的作品…除了处理@media查询。 问题是由于嵌套的花括号,这给我适合。 我基本上想创build一个媒体查询中的所有内容的捕获组:这是我到目前为止。 @media[^{]+\{([^}]+)}\s*} 这工作很好,就像这样简单: @media (max-width: 868px) { aside .size-toggle { display: none; } } 但不能拿起多个嵌套的规则,像这样: @media (max-width: 767px) { #wrapper.sidebar-display aside { left: 0; transition: all 0.5s ease; -webkit-transition: all 0.5s ease; -moz-transition: all 0.5s ease; -ms-transition: all 0.5s ease; -o-transition: all 0.5s ease; } #wrapper.sidebar-display #top-nav { left: 0; right: -194px; } […]

V8caching是否自动编译正则expression式?

所以我知道在JavaScript中实例化一个正则expression式会导致它被自动编译,如果这个正则expression式存储在一个variables中,它将被重用而不用重新编译。 例: var re = /[Ff]oo|[Bb]ar/; "Foo".match(re); // ["Foo"] "Baz".match(re); // null 但是,重新编译的正则expression式是重复的还是V8(Chrome / Node.js)智能地重新使用它们(就像PHP与preg_ *函数一样)? function isFooBar(str) { return str.match(/[Ff]oo|[Bb]ar/); } isFooBar("Foo"); // ["Foo"] isFooBar("Baz"); // null 所以为了澄清,我知道第一个例子导致了正则expression式的汇编。 但是第二个例子呢?

MongoDB正则expression式search – 从使用JavaScript驱动程序和NodeJS开始

我正在使用nodejs的JavaScript mongodb驱动程序。 我想在我的JavaScript函数中执行这个查询: db.mycollection.find({Zip:/^94404/}); mongo客户端检索8个符合这个标准的文档。 但是,我的JavaScript代码不提取任何文件。 DataProvider.prototype.findByZipcode = function(zipCode,callback){ this.getCollection(function(error,collection){ 如果(错误) callback(误差); else { var qs ='{Zip:/ ^'+ zipCode +'/}'; collection.find(qs).toArray(function(error,results){ 如果(错误) callback(误差); 其他 callback(null,结果); }); } }); }; 我也试过了 <pre> var qs = {Zip: '/^'+zipCode+'/'}; </pre> 顺便说一句,我发现确切的匹配工作正常,但这不是我想要的。 即。 <pre> var q = {'Zip' :zipCode}; </pre>

parsing一个stream而不削减

我正在阅读一个stream,这是testing与正则expression式: var deviceReadStream = fs.createReadStream("/path/to/stream"); deviceReadStream.on('data',function(data){ if( data.match(aRegex) ) //do something }); 但是由于河stream被分成几个大块,所以切入可能会让我错过一场比赛。 所以有一个更好的模式来连续testing一个正则expression式的stream? 更多细节 stream是崩溃的文件系统的内容。 我正在寻找一个ext2签名(0xef53)。 由于我不知道块是如何分裂的,签名可能被分割而不被检测到。 所以我使用了一个循环来自定义块的分割方式,即通过文件系统的块来分割。 但使用stream似乎是一个更好的模式,所以如何使用stream,同时定义自己的块大小?

如何使用mongoose发现所有包含一部分string的值?

我有以下问题使用mongoose从MongoDB中检索数据。 这是我的模式: const BookSchema = new Schema( { _id:Number, title:String, authors:[String], subjects:[String] } ); 你可以看到我有2个数组embedded对象,让我们说,作者的内容可以是这样的:作者:[“亚历克斯·弗格森”,“德罗巴”,“克里斯蒂亚诺罗纳尔多”,“亚历克斯”] 我想要实现的是获得arrays中的所有Alex。 到目前为止,我已经能够得到值,如果他们完全匹配的价值。 但是,如果我试图得到那些包含亚历克斯的答案总是[]。 我想知道的是,如何使用find()而不执行map-reduce来创build视图或集合,然后在其上应用find()。 这里的代码适用于完全匹配 Book.find( {authors:req.query.q} , function(errs, books){ if(errs){ res.send(errs); } res.json(books); }); 我尝试了一些东西,但没有运气{作者:{$ elemMatch:req.query.q}} {作者:{$ in:[req.query.q]}} 这个给了我一个错误,而且在我发现这里的另一个post里说的是非常低效的。 {$ where:this.authors.indexOf(req.query.q)!= -1} 我也试过{作者:{$ regex:“./ value / i”}} map-reduce工作正常,我需要使用其他方法来查看哪个更好? 任何帮助是极大的赞赏。 我确信这很容易,但是我是NodeJS和Mongo的新手,我一直无法自己搞清楚。

Javascript:如何在RegEx .exec结果中获得多个匹配项

当我跑步 /(a)/g.exec('aaa ').length 我明白了 2 但我认为它应该返回 3 因为弦中有3 a s,而不是2个! 这是为什么? 我希望能够search正则expression式中的所有string,并迭代它们。 FWIW:我正在使用node.js

咕噜(minimatch / glob)文件夹排除

我有一个情况,我试图用grunt来删除一个代码库,不包括特定的文件夹。 咕噜使用minimatch(类似于bsdglob)在引擎盖下匹配文件,但我似乎无法弄清楚如何做一个.gitignore风格排除一个文件夹。 我想要摄取这个: ignoreme 并匹配这些: /folder/path/here/to/something/ok.js /another/folder/path.js /test.js 但不匹配这些: /folder/ignoreme/something.js /folder/path/here/to/ignoreme/metoo/file.js 这将匹配一切,包括忽略: /**/*.js 所以我想我可以做一些事情: /**/!(ignoreme)/**/*.js 但是匹配ignoreme文件夹中的文件。 我习惯了正则expression式,但似乎无法弄清楚如何在这里重复模式或东西 – 我也尝试过这样的东西: /(!(ignoreme)|*)*/*.js 希望容器可以重复,但是这不起作用,它只是没有匹配所有的东西。 任何方式来传递一个正则expression式grunt文件path,或使这对我工作? 更新: 以下是我目前正在处理的问题: var pattern = /\/ignoreme\// var files = grunt.file.expandFiles(arrayOfFilesPassedToMinimatch).filter(function(f){ return !pattern.test(f) }) 我仍然有兴趣,如果文件夹排除可能在minimatch。