Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 查找上一条导入语句的索引_Javascript_Regex_Node.js - Fatal编程技术网

Javascript 查找上一条导入语句的索引

Javascript 查找上一条导入语句的索引,javascript,regex,node.js,Javascript,Regex,Node.js,我正在使用节点的fs.readFileSync(file)读取文件。我需要找到导入语句最后一次出现的索引 我正在阅读的js文件将类似于: import React from 'react'; import { FlowRouter } from 'meteor/kadira:flow-router'; import { mount } from 'react-mounter'; import { AppLayout } from '../../ui/layouts/AppLayout'; imp

我正在使用节点的
fs.readFileSync(file)
读取文件。我需要找到导入语句最后一次出现的索引

我正在阅读的js文件将类似于:

import React from 'react';
import { FlowRouter } from 'meteor/kadira:flow-router';
import { mount } from 'react-mounter';
import { AppLayout } from '../../ui/layouts/AppLayout';
import HomePage from '../../ui/pages/HomePage';

FlowRouter.route('/', {
  name: 'home',
  action() {
    mount(AppLayout, {
      content: (<HomePage />)
    });
  }
});
从“React”导入React;
从“meteor/kadira:flow router”导入{FlowRouter};
从'react mounter'导入{mount};
从“../ui/layouts/AppLayout”导入{AppLayout};
从“../../ui/pages/HomePage”导入主页;
FlowRouter.route(“/”{
姓名:'家',
行动(){
安装(应用布局){
内容:()
});
}
});
所以在这个特殊的例子中,我需要找到这个import语句的分号索引:
importhomepage from'../../ui/pages/HomePage'因为这是最后一个

我已经研究了
str.lastIndexOf(searchValue[,fromIndex])
,但它将字符串作为
searchValue
,在这种情况下,我需要传入一个正则表达式

看起来我需要一个正则表达式,它将反向查找


如何匹配并获取上次导入的索引?

我想您要查找的是以
import
开头的最后一行,然后在后面插入另一行。有几种方法

拼接和
索引of

//来自的拼接代码http://stackoverflow.com/a/4314050/3832970
String.prototype.splice=函数(idx、rem、str){
返回this.slice(0,idx)+str+this.slice(idx+Math.abs(rem));
};
var input=“import React from'React';\nimport{FlowRouter}from'meteor/kadira:flow router';\nimport{mount}from'React mounter';\nimport{AppLayout}from'../ui/layouts/AppLayout';\nimport homeport from'../ui/pages/HomePage'.\n\n\n\n FlowRouter.router('/,{\n name:'home',\n action(){\n mount(AppLayout,{\n content:});\n}\n});“;
var strt=input.lastIndexOf(“\nimport”);
strt=input.indexOf(“\n”,strt+1);

document.body.innerHTML=“+input.splice(strt+1,0,“从\'../../Example\';\n导入示例”)+”
匹配所有项并获取最后一项:
input.Match(/^import.*/gm).pop()
-我没有注意:您需要上次导入的索引
-怎么办?或者
var m=input.match(/^([\s\s]*\n)?import.*/);如果(m){document.body.innerHTML=m.index+(m[1]?m[1].长度:0);}
(Fiddle#2-)如此接近@WiktorStribiżew!检查此项并打开控制台:。你看到它是如何在上次导入之前添加新导入的了吗?我试图在最后一个之后添加它,所以,您需要在最后一个之后添加另一个
Import
,对吗?见.补充说明。