【问题标题】:Match end of Javascript code statement匹配 Javascript 代码语句的结尾
【发布时间】:2012-12-06 15:46:48
【问题描述】:

我想处理/解析和更改一些 Javascript 代码,如果可能的话,最好使用正则表达式(欢迎提出建议)。目的是在 JS 中的每条语句之后插入一个新的代码 sn-p。

例如:

原始 Javascript:

while(true){

    Utils.log("hello world");
    Utils.sleep(1000);

}

我要插入的代码 sn-p:

checkPause();

所以新代码如下所示:

while(true){

    checkPause();
    Utils.log("hello world");
    checkPause();
    Utils.sleep(1000);
    checkPause();

}
checkPause();

上面的例子很简单,但真正的 JS 代码可能会更复杂,甚至可以缩小。代码也可能漏掉一些分号;

【问题讨论】:

  • 我假设这是出于调试目的?
  • 这个术语是“仪器”,这个问题在stackoverflow.com/questions/843546/…之前已经问过了
  • @RocketHazmat:我正在用 C# 构建一个程序,它使用 V8 引擎和javascriptdotnet.codeplex.com 来运行一些脚本。我需要脚本来检查它是否应该暂停。
  • @user1816548 感谢您的链接,我正在检查。
  • 这不可能用正则表达式来做。为此使用 javascript 解析器。

标签: javascript regex


【解决方案1】:

这样做的一个非常肮脏的方法是在每个左大括号、右大括号和分号之后插入您的 sn-p。像这样:

 code.replace(/\;/g, '; checkPause(); ').replace(/\{/g, '{ checkPause(); ').replace(/\}/g, '} checkPause(); ')

正确的方法是使用解析器。

【讨论】:

  • 感谢您的回答,我需要为我的目的进行更多测试,但它似乎有效。我在 C# 中将其缩小到 Regex.Replace(code, @"\;|\{|\}|\n", @"$0 checkPause();")
  • 请注意您的代码不包含例如一个=“;” :)
猜你喜欢
  • 2012-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-21
  • 1970-01-01
  • 2011-02-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多