js正则贪婪匹配的问题

在做一个vue自动化项目的时候,遇到了这样的问题:
有以下字符串:
`children:[

  {
    path: "/test1/demo/index",
    component: () => import("@/views/test1/demo/index.vue"),
    name: "demo"
  },
  {
    path: "/test1/demo/index",
    component: () => import("@/views/test1/demo/index.vue"),
    name: "demo"
  },]`

目前需要删掉() => import 只保留路径部分
目前有以下正则:/(?<=component:).import((.?)),$/mus

但是匹配出来的结果是 :

`() => import("@/views/test1/demo/index.vue"),

    name: "demo"
  },
  {
    path: "/test1/demo/index",
    component: () => import("@/views/test1/demo/index.vue"),`

虽然删掉s可以完成匹配,但请教各位大神,这里为什么使用了非贪婪匹配依旧还会匹配到第二个component呢?

阅读 3k
3 个回答
const newSTR = str.replace(/\(\) => import\((.*)\)/g, (a, b, c) => b);

/(?<=component:).import((.?)),$/mus.exec(str)
这个表达式?

凭感觉写出的正则:

string.replace(/((?<=component\s*:).*import)?/g,'')

你的问题在于非贪婪用错地方了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题