首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript用于选择react项目中的导入语句

Javascript用于选择react项目中的导入语句
EN

Stack Overflow用户
提问于 2022-06-29 08:33:21
回答 1查看 78关注 0票数 -2

我想搜索npm包的导入声明,而不是本地进口,

我想搜索这些类型的字符串:

代码语言:javascript
复制
import axios from 'axios';
import ApolloLinkTimeout from 'apollo-link-timeout';
import { RestLink } from 'apollo-link-rest';
import { InMemoryCache } from 'apollo-cache-inmemory';
import { ApolloClient } from 'apollo-client';
import { ApolloLink } from 'apollo-link';
import { onError } from 'apollo-link-error';

但不是这些:

代码语言:javascript
复制
import { getAllAccounts } from '../../store/actions/actions';
import { CREATE_ACCOUNT_QUERY } from '../queries/AccountsQuery';
import UserContext from '../UserContext';

这是否可能在javascript中使用Regex或任何其他方式,我已经尝试过import {[^}]*}.*'foo-bar',但这并不像预期的那样工作。

编辑:根据评论,

代码语言:javascript
复制
^import\s+(?:\{\s*\w+\s*\}|\w+)\s+from\s+['"]([^\/]+?)['"];?$

正在取得更好的效果,但对下列情况则不然:

代码语言:javascript
复制
import React, { useEffect, useState } from 'react';
import { Col, Modal, ModalHeader, Row } from 'reactstrap';
import { useLazyQuery } from '@apollo/react-hooks';
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-29 11:48:09

代码语言:javascript
复制
^import\s.*?\sfrom\s+['"](@[\w\/\-]+|[^.]+?)(?:\/.*?)?['"];?$

解释

  • 字符串的^开头
  • import\s.*?\s匹配字符串,该字符串以import关键字开头,然后模块默认,或在空格字符后导出到from
  • from\s+匹配from关键字和一个或多个空格
  • ['"]匹配' (单引号)或" (双引号)字符
  • (捕获组
    • @[\w\/\-]+包名应该以@开头,可以包含单词字符(字母、数字、下划线)、/-字符
    • |
    • [^.]+?包名应包含除. (点)以外的任何字符

  • )紧群
  • 没有捕获的(?:\/.*?)?匹配包子路径(可以存在也可以不存在)
  • ['"];?匹配关闭引号和可选的;在末尾
  • 字符串的$末端

请参阅regex 演示并请注意最后一行,它只捕获包名。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72798242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档