首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在JavaScript中使用正则表达式替换添加".js“扩展

在JavaScript中使用正则表达式替换添加".js“扩展
EN

Stack Overflow用户
提问于 2018-08-15 08:39:12
回答 3查看 136关注 0票数 2

假设我必须导入语句

代码语言:javascript
复制
// other code...
import * as Foo from "../some/bar";
import { baz } from './dir/qux';
// other code...

我想在上面的每个文件末尾添加一个.js扩展名,用单引号/双引号引起来,如下所示

代码语言:javascript
复制
import * as Foo from "../some/bar.js";
import { baz } from './dir/qux.js';

在整个代码字符串中。

在JavaScript中替换正则表达式的正确方式是什么?

globalcase匹配中

str.replace(regexp, newSubstr|function)

String.replace docs

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-08-15 09:04:53

这似乎行得通

查找:

/^(import[^\S\r\n].+?[^\S\r\n]from[^\S\r\n]*(["']))((?:(?!(?:\.js)?\2)[\S\s])+)(\2\s*;)/mg

替换:

$1$3.js$4

https://regex101.com/r/Obcf0S/1

可读的正则表达式

代码语言:javascript
复制
 ^                             # BOL
 (                             # (1 start), Preamble
      import [^\S\r\n] .+? 
      [^\S\r\n] 
      from [^\S\r\n]* 
      ( ["'] )                      # (2), Delimiter
 )                             # (1 end)
 (                             # (3 start), Body
      (?:
           (?!
                (?: \.js )?
                \2 
           )
           [\S\s] 
      )+
 )                             # (3 end)
 ( \2 \s* ; )                  # (4), Postfix
票数 1
EN

Stack Overflow用户

发布于 2018-08-15 08:51:46

查找以import开头且包含斜杠、后跟非斜杠、非句点字符的行,并提前查找['"];?以标识字符串和行尾:

代码语言:javascript
复制
const codeStr = `
// other code...
import * as Foo from "../some/bar";
import { baz } from './dir/qux';
import { bar } from './dir/bar.js';
// other code...
`;
console.log(
  codeStr.replace(/import .+\/[^\/\.]+(?=['"];?$)/gm, '$&.js')
);

票数 2
EN

Stack Overflow用户

发布于 2018-08-15 08:57:33

试试这个:

代码语言:javascript
复制
let match = /(import.*)("|');/g.exec(`import { baz } from './dir/qux';`)

然后,您将获得以下列表:

代码语言:javascript
复制
(3) ["import { baz } from './dir/qux';", "import { baz } from './dir/qux", "'", index: 0, input: "import { baz } from './dir/qux';", groups: undefined]

您只需要在元素1和元素2之间添加.js。

代码语言:javascript
复制
match[1]+".js"+match[2]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51851456

复制
相关文章

相似问题

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