Tag: regex

Node.js:如何在ECT模板中打印URL的一部分

下面是app.js. ECT文件是基于path加载的。 var http = require('http'); var ECT = require('ect'); var renderer = ECT({ root : __dirname + '/views' }); var data = { title : 'Hello, world!', size : 'XXL' }; var product = renderer.render('product.ect', data); var about = renderer.render('about.ect', data); var anypath = renderer.render('anypath.ect', data); var server = http.createServer(function(req, res) { var params; […]

node / io中复杂的正则expression式提取

有我尝试使用的图书馆的Twitter文本。 它有很多在运行时计算的复杂正则expression式。 我不需要所有的库,所以我决定只使用它的一些正则expression式。 所以我有一个脚本来提取它并保存到另一个js文件: var _ = require('lodash'); var fs = require('fs'); var twitterText = require('twitter-text'); // 1.11.0 (latest) var content = [ '/**', ' * @preserve https://github.com/twitter/twitter-text-js', ' */', 'var regexps = { };' ]; _.forEach({ url: 'extractUrl', // <- this regexp is the problem hash: 'validHashtag', mention: 'validMentionOrList' }, function(twitterTextRegexpName, regexpName) { var […]

如何根据在Node.JS中是$ regex还是$ text来对Mongoose结果进行sorting?

我有一个REST API调用像/item/search ,它附带了一些查询参数。 用户可以searchentire term或者一个术语的3 or more characters 。 Node.JS输出函数如下, exports.getSearchedItems = function(req,res){ var searchText = req.query.q; var searchedString = searchText.replace(/ /g,"|"); var nameRegex = new RegExp('\\b' + searchedString + '.*', 'i'); Item.find() .or([ {$text: {$search: searchText } }, {'name': {$regex: nameRegex } }, {'score':{'$meta': 'textScore'} ] ) .sort({'score':{'$meta': 'textScore'}} .exec(function(err, items){ if(err) console.log('Error Finding […]

string模式到正则expression式

我正在使用mongodb来存储数据。 我想存储完整的正则expression式作为string: { permissions: [{ resName: '/user[1-5]/ig', isRegex: true }] } 我知道有模块mongoose-regexp可以存储RegExp,但我想存储正则expression式和string在同一个字段。 我已经实现了使用eval(user.permissions[i].resName).test(resName) 。 我想知道这是否是正确的方法,如果有任何替代(即使用new RegExp(…) ) 编辑 我试图避免eval因为这个字段是来自用户input,如果有什么东西发送到数据库可能是一个问题。

Javascript的正则expression式意外的输出

我正在尝试使用节点在css文件上执行一些正则expression式 。 这是我的javascript: var fs = require ('fs'); fs.readFile('test.css','utf8',function(error,css){ if(error){ console.log("I'm sorry, something went terribly wrong 😮 Here's the message: "+error); } var matches = css.match(/([a-zA-Z-]+):\s*([0-9]+)(vh|VH|vw|VW)/g); console.log(matches[2][1]); }); 运行时的预期输出: 实际产出: 正如你所看到的,它不会像预期的那样把每一个匹配放在自己的数组中,它只是把所有的东西放在一个没有任何子数组的巨型数组中。 我能做什么?

在巨大的文件中合并CSV行

我有一个像这样的CSV 783582893T,2014-01-01 00:00,0,124,29.1,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y 783582893T,2014-01-01 00:15,1,124,29.1,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y 783582893T,2014-01-01 00:30,2,124,29.1,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y 783582855T,2014-01-01 00:00,0,128,35.1,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y 783582855T,2014-01-01 00:15,1,128,35.1,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y 783582855T,2014-01-01 00:30,2,128,35.1,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y … 783582893T,2014-01-02 00:00,0,124,29.1,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y 783582893T,2014-01-02 00:15,1,124,29.1,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y 783582893T,2014-01-02 00:30,2,124,29.1,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y 尽pipe有50亿条logging。 如果您注意到第一列和第二列(当天)的一部分,则三个logging全部“分组”在一起,并且仅仅是当天的前30分钟的15分钟间隔。 我想要输出看起来像 783582893T,2014-01-01 00:00,0,124,29.1,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y 783582855T,2014-01-01 00:00,0,128,35.1,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y … 783582893T,2014-01-02 00:00,0,124,29.1,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y,40.0,0.0,40,40,5,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,Y 其中重复行的前4列被省略,其余的列与第一个logging相结合。 基本上我每天换线的时间是15分钟,到每一天是1天。 由于我将处理50亿条logging,所以我认为最好的方法是使用正则expression式(和EmEditor)或一些为此(multithreading,优化)而devise的工具,而不是自定义的编程解决scheme。 尽pipe我对nodeJS或C#中的想法是比较简单和超快的。 如何才能做到这一点?

从MongoDB中删除与“本文”匹配的条目

好的,我已经search,search,我还没有find一个方法来使这项工作。 这是我有: 我正在在node / express / socketio等聊天应用程序工作。我试图创build一个“清除”function,从指定的input删除从MongoDB的某个聊天消息。 例如: /clear badword /clear heck /clear Barbara Streisand 我正在努力创build一个合适的RegEx,它实际上会查找包含指定文本的条目。 这是我目前使用的: Chat.remove({"msg":{$regex: new RegExp('.*' + myInput, 'i')}}); 它似乎没有find任何东西。 注意:指定的文本可以在聊天消息的任何地方,所以我需要能够说: 如果<this text>存在于密钥的任何位置,请将其删除。 我一直在查看RegEx文件几个小时,我不能使任何工作。 任何人都可以指向正确的方向吗?

用于validationUTF-8的正则expression式仅包含“普通”字符

在我的项目中,用户可以注册一个可公开查看的昵称。 我希望允许该名称包含来自任何脚本(阿拉伯文,拉丁文,西里尔文,日文等)的字符,但要防止控制字符,标点符号和非字母字符(如✇或✈)。 我发现了很多用于过滤来自各种单独脚本的字母数字字符的例子,但是我不想花费数天的时间来通过编码表来挖掘每一个脚本,以便通过手动方式。 任何build议?

如何使用包含斜线字符的参数?

我personcollections中的MongoDB密钥如下所示: TWITTER/12345678 GOOGLE/34567890 TWITTER/45678901 … 我这样定义getPersonByKey路线: router.route('/getPersonByKey/:providerKey/:personKey'). get(function(req, res) { // get person by key var key = req.params.providerKey + '/' + req.params.personKey; // … } ); 当然,我更愿意写这样的东西: router.route('/getPersonByKey/:key'). get(function(req, res) { // get person by key var key = req.params.key; // … } ); 但是,这是行不通的,因为GET http://localhost/getPersonByKey/TWITTER/12345678当然会产生一个404,因为带斜线的参数被解释为两个不同的参数…任何想法?

正则expression式与星星的电话号码

以下function将电话号码(例如+33286487648)转换为+332 ****** 48。 formatPhoneWithStar = function(phone) { const prefixLength = 4; const suffixLength = 3; const prefix = phone.substring(0, prefixLength); const suffix = phone.slice(-suffixLength); const nbStars = phone.length – (prefixLength + suffixLength); let formattedPhone = prefix; for (let i = 0; i < nbStars; i++) { formattedPhone += '*'; } formattedPhone += suffix; return formattedPhone; […]