使用Regex或其他东西理解字符串中的代码 - Js

时间:2015-12-23 14:25:06

标签: javascript regex replace

我想在一段代码上运行一个字符串替换函数,并确保代码中的所有字符串都是完整的并且使用javascript保持不变。例如,如果我有如下代码:

var a = "I am ok";

if (a == "I am ok") {
   alert("That's great to know");
}

现在,我想在此代码块上运行字符串替换。但它应该只影响它的代码部分。不是双引号的字符串。可以使用正则表达式或任何其他方法来完成吗?

2 个答案:

答案 0 :(得分:2)

AST

为避免使用Abstract Syntax Tree (AST)类型解决方案进行代码操作时出现任何错误,最好。一个示例实现在UglifyJS2中,它是一个JavaScript解析器,缩小器,压缩器或美化工具包。

正则表达式

或者,如果AST超出您的特定任务的顶部,您可以使用RegEx。

但你也必须同意评论吗?

该过程可能如下所示:

  1. 使用精心构建的正则表达式按以下顺序拆分 JavaScript代码字符串:
    • 评论块
    • 评论专栏
    • 引用了单引号和双引号的字符串(记得要逃避字符)。
  2. 通过拆分组件迭代。如果字符串(带有"'的人)或评论(以///*开头)会忽略,否则请运行替换。
  3. (和简单部分)将字符串数组连接在一起。

答案 1 :(得分:1)

您必须将函数代码放在字符串变量中,对该字符串运行正常的正则表达式操作,然后将其转换为函数:

var func = new Function('a', 'b', 'return a + b');

编辑:如果需要,使用正则表达式在双引号之间排除文本。