正则表达式范围内的动态替换

Bodokaiser

我需要在JavaScript源文件中重写一些require路径:

示例(foo=> ../../../foo/baz):

  1. var a = require('foo/a'); => var b = require('../../../foo/baz/a');
  2. var a = require('foo/../b'); => var b = require('../../../foo/baz/../b');

注意:此替换将在完整的js源文件上完成。因此require('') 必须用作分隔符!

到目前为止,我们已经确定要使用这样的设置:

var source = '';

source += "var a = require('foo/a');\n";
source += "var b = require('foo/../b');\n";
source += "console.log(a + b);";

var options = {
  'foo': '../../../foo/baz'
};

for (var key in options) {
  var regex = new RegExp('require[(](\"|\')' + key, 'g');

  source = source.replace(regex, "require('" + options[key]);
}

console.log(source);

虽然上面的源代码正在工作。我不确定是否保存了,因为我只是跳过了结束定界符。

TJ人群

我认为这样做:

str = str.replace(/require\((['"])([^'"]*)foo\/([^'"]*)(['"])/g, "require($1$2../../../foo/baz/$3$4");

这是正则表达式直播:http : //regex101.com/r/bE5jI4

说明:

  • requirerequire从字面上匹配字符(区分大小写)

  • \((从字面上匹配字符

  • 第一捕获小组 (['"])

    • ['"]匹配'"字面上匹配
  • 第二捕获小组 ([^'"]*)

    • [^'"]* 匹配以下列表中不存在的单个字符

      • 量词:在0到无限制的时间之间,尽可能多的次数,并根据需要返回[贪婪]
    • '"'"从字面上看列表中的单个字符

  • foofoo从字面上匹配字符(区分大小写)

  • \//从字面上匹配字符

  • 第三捕获小组 ([^'"]*)

    • [^'"]* 匹配以下列表中不存在的单个字符

      • 量词:在0到无限制的时间之间,尽可能多的次数,并根据需要返回[贪婪]

      • '"'"从字面上看列表中的单个字符

  • 第四捕获小组 (['"])

    • ['"]匹配'"字面上

如果在引号前有可选的空格,或者您的路径可能包含'"字符,则可能需要对其进行调整(在后一种情况下,您将需要两次替换,一次是包装引号是',而另一次是引号"。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在正则表达式范围内进行动态替换

来自分类Dev

正则表达式匹配范围内

来自分类Dev

正则表达式提取范围内的数字

来自分类Dev

字母范围内姓氏的正则表达式

来自分类Dev

正则表达式替换范围

来自分类Dev

具有unicode范围的Python正则表达式匹配不在范围内的字符

来自分类Dev

javascript正则表达式验证范围内的年份

来自分类Dev

如何在Angular JS范围内给出正则表达式模式

来自分类Dev

如何使用正则表达式限制范围内的字符

来自分类Dev

正则表达式可以在更大的匹配范围内重复捕获组?

来自分类Dev

在python数据框的范围内查找正则表达式

来自分类Dev

javascript正则表达式验证范围内的年份

来自分类Dev

如何在Angular JS范围内给出正则表达式模式

来自分类Dev

用于检查是否在2个范围内找到IP的正则表达式

来自分类Dev

字符串的正则表达式以范围内的字符开头

来自分类Dev

PHP正则表达式,用于检查MM / DD是否在适当范围内

来自分类Dev

用于确定字母数字代码是否在范围内的正则表达式

来自分类Dev

正则表达式可以在更大的匹配范围内重复捕获组?

来自分类Dev

您可以在正则表达式范围内做子模式吗?

来自分类Dev

生成正则表达式以检查数字是否在范围内的算法(ANY RANGE)

来自分类Dev

AngularJS范围内的动态数据无法替换表达式吗?

来自分类Dev

AngularJS范围内的动态数据无法替换表达式吗?

来自分类Dev

多行vim正则表达式替换范围

来自分类Dev

Powershell-正则表达式日期范围替换

来自分类Dev

用正则表达式动态替换值

来自分类Dev

用正则表达式动态替换值

来自分类Dev

用正则表达式动态替换值

来自分类Dev

正则表达式,替换标记内的空格

来自分类Dev

正则表达式替换花括号内的点?

Related 相关文章

  1. 1

    在正则表达式范围内进行动态替换

  2. 2

    正则表达式匹配范围内

  3. 3

    正则表达式提取范围内的数字

  4. 4

    字母范围内姓氏的正则表达式

  5. 5

    正则表达式替换范围

  6. 6

    具有unicode范围的Python正则表达式匹配不在范围内的字符

  7. 7

    javascript正则表达式验证范围内的年份

  8. 8

    如何在Angular JS范围内给出正则表达式模式

  9. 9

    如何使用正则表达式限制范围内的字符

  10. 10

    正则表达式可以在更大的匹配范围内重复捕获组?

  11. 11

    在python数据框的范围内查找正则表达式

  12. 12

    javascript正则表达式验证范围内的年份

  13. 13

    如何在Angular JS范围内给出正则表达式模式

  14. 14

    用于检查是否在2个范围内找到IP的正则表达式

  15. 15

    字符串的正则表达式以范围内的字符开头

  16. 16

    PHP正则表达式,用于检查MM / DD是否在适当范围内

  17. 17

    用于确定字母数字代码是否在范围内的正则表达式

  18. 18

    正则表达式可以在更大的匹配范围内重复捕获组?

  19. 19

    您可以在正则表达式范围内做子模式吗?

  20. 20

    生成正则表达式以检查数字是否在范围内的算法(ANY RANGE)

  21. 21

    AngularJS范围内的动态数据无法替换表达式吗?

  22. 22

    AngularJS范围内的动态数据无法替换表达式吗?

  23. 23

    多行vim正则表达式替换范围

  24. 24

    Powershell-正则表达式日期范围替换

  25. 25

    用正则表达式动态替换值

  26. 26

    用正则表达式动态替换值

  27. 27

    用正则表达式动态替换值

  28. 28

    正则表达式,替换标记内的空格

  29. 29

    正则表达式替换花括号内的点?

热门标签

归档