Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
除注释外的所有javascript代码的正则表达式_Javascript_Regex - Fatal编程技术网

除注释外的所有javascript代码的正则表达式

除注释外的所有javascript代码的正则表达式,javascript,regex,Javascript,Regex,我试图做的是选择每一行javascript代码,除了注释,只是注释/**to*/开头有空格或没有空格,并替换为单词代码。我需要一个正则表达式和替换javascript函数 比如说 输入 正则表达式必须使用以下代码: <!DOCTYPE html> <html> <body> <p>Source Code</p> <textarea rows="50" cols="150" id="input"><

我试图做的是选择每一行javascript代码,除了注释,只是注释/**to*/开头有空格或没有空格,并替换为单词代码。我需要一个正则表达式和替换javascript函数

比如说

输入 正则表达式必须使用以下代码:

  <!DOCTYPE html>
  <html>
  <body>

  <p>Source Code</p>
  <textarea rows="50" cols="150" id="input"></textarea>

  <p>Click the button to perfom a global replacement and display   the matches.</p><button onclick="myFunction()">Try it</button>
  </br>
  <textarea rows="50" cols="150" id="output"></textarea>
  <script>
    function myFunction() {
      var not_comments = document.getElementById("input").value.replace(RegEX,'(code)');
      document.getElementById("output").value = not_comments;
    }
  </script>

  </body>
  </html>

如果您只想消除它,您可以捕获它并进行替换

例如:

var text = "/** TEST */ stuff";
text.replace(/(\/\*\*[\s\S]*\*\/)/g, '');
要分解它:

(\/\*\*            //This Matches /** with the start of a capture group
[\s\S]*            //This Matches ANY character (including line endings) zero or more times.
\*\/)              //This matches */ and closes the group
这将采用该文本并用空格替换/**TEST*/

以下是一个例子:

但是,如果您处理的是大文件,最好使用文件读取器读取文件并写入新文件,而不要包含注释。这可以通过创建一个标志来实现,该标志在点击/**时打开,不允许写入,然后在点击*/时关闭,再次允许写入。

您可以使用:

\*\/([\s\S]*?)(\/\*\*|$)

以下是示例:

这是我的最终方法:

源代码

单击按钮执行全局替换并显示匹配项。

试试看 输出

不带空行的输出

函数myFunction{ var代码=代码 var withoutspaces=document.getElementByIdinput.value.replace/^+/gm; var regex=/\/\*[\s\s]*?\*\/\^[\s\s]*?$/gm; var replaced=withoutspaces.replaceregex,functionm,group1{ 如果组1返回代码; 否则返回m; }; document.getElementByIdoutput.value=已替换; document.getElementByIdoutput\u不带空白行。value=replacement.replace/^[\t]*$\r?\n/gm,代码+'\n'; }
你能给我们看看你的操作代码吗?不是示例输入。输出是不是/**Coment*/replace为的每一行。但我需要用正则表达式来做。这个问题不是重复的。不一样。这个杰克是谁???你用另一个问题过滤掉所有的评论,然后用代码替换剩下的行。这有多难?首先,我不想过滤评论。只需替换不需要评论的内容。第二,就是这样的评论。不是所有的评论。第三,我想使用函数replace和RegEx,不再使用javascript代码。明白了吗?谢谢你的回答,但我已经知道了。我想替换另一个代码,没有被/**Coment*/替换的每一行都是你所建议的正则表达式的倒数,正则表达式可能不是你想要的。您应该使用某种文件读取器,逐行读取文件,如果您点击了注释开始,则应使用布尔标志,以便在后续行中检查注释结束。因此,您将打开一个文件HTML5文件API并读取每一行,检查该行中的/**并拆分该行(如果存在)。如果该行不存在,请在新文件中用代码替换该行,否则,如果您在注释中,请编写您刚刚阅读的行的输出。感谢您的回复。我知道这可能不是最好的方法,但这次我需要使用RegExs并替换它。我想我很接近了。如果你用另一种语言使用Regex,可能会更容易,带有javascript的Regex没有正面的外观,这在这种情况下会非常有用。
(\/\*\*            //This Matches /** with the start of a capture group
[\s\S]*            //This Matches ANY character (including line endings) zero or more times.
\*\/)              //This matches */ and closes the group
\*\/([\s\S]*?)(\/\*\*|$)