REGEX:如何使用PHP代码从javascript中删除注释 - php

我将所有javascriupt合并为一个整洁的文件,以降低http请求!我无法删除注释/* comments */// comments
我的水平远远低于缩小或分析的东西。我知道如何制作通心粉弦。除此之外,您还无法在我的计算机或厨房中找到任何东西:

同时将其合并到一个文件中,我想删除所有注释。
正确的正则表达式是什么?

<?php
header('Content-type: text/javascript');    
$offset = 60 * 60 * 24; // Cache for a day
header ('Cache-Control: max-age=' . $offset . ', must-revalidate');
header ('Expires: ' . gmdate ("D, d M Y H:i:s", time() + $offset) . ' GMT');

ob_start("compress");
function compress($buffer) {

# NOT SURE, not all new lines are removed??
# remove tabs, spaces, newlines, etc.
$buffer = str_replace(array("\r\n", "\r", "\t", '  ', '    '), '', $buffer);  

# WORKS !!!
# remove comments / XXXXXXX
$buffer = preg_replace('(// .+)', '', $buffer);

######################################################################## 
# !! STUCK HERE !! OUTPUT FILE LOOKS OK BUT WEBSITE DOESNT LOAD OK IF THIS IS ON
# remove comments / * XXX  (enters etc) XXXX  * /
# $buffer = preg_replace('#/\*(?:.(?!/)|[^\*](?=/)|(?<!\*)/)*\*/#s', '', $buffer);
########################################################################        

return $buffer;
}

include('../file1.js');
include('../file2.js');  
ob_end_flush();
?>

如果它将捕获并删除以下内容,那就太好了:

/* XXXX */

/* 
  XXXX
  XXXX
*/

就这样!不能让它正常工作,即使使用这个令人难以置信的工具,我也使用正则表达式,我发现正确的匹配是:

RegExp: /\/\*(?:.(?!/)|[^\*](?=/)|(?<!\*)/)*\*\//gs
pattern: \/\*(?:.(?!/)|[^\*](?=/)|(?<!\*)/)*\*\/
flags: gs

http://gskinner.com/RegExr/

参考方案

使用正则表达式并不是删除Javascript注释的最有效方法。您需要一个字符串解析器和缩小器。见http://razorsharpcode.blogspot.com/2010/02/lightweight-javascript-and-css.html

如果您坚持使用正则表达式模式,请考虑如何解析这个根本不包含Javascript注释的简单代码:

var regex=/(ftp|https?):\/\//; alert('hello, world'); return regex;

请注意alert()前的双斜杠。使用正则表达式的愚蠢解析器会将有效的Javascript代码视为注释!

PHP:正则表达式,用于用硬破空格替换数字之间的空格 - php

我想创建一个正则表达式,根据我的国家印刷规则,将常规空间替换为难以破解的空间。它不应触摸HTML标签。这些示例中的所有空格都应艰辛:号码1 000 10 000 100 000 1 000 000 etc.. 日期17. 6. 17. 6. 2012 我想出了:$pattern = '/((\d\.?)\s(\d))(?=[^>]*(<…

RegEx BackReference以匹配不同的值 - php

我有一个正则表达式,用于匹配(val1 operator val2)形式的Expression这个正则表达式看起来像:(\(\s*([a-zA-Z]+[0-9]*|[0-9]+|\'.*\'|\[.*\])\s*(ni|in|\*|\/|\+|\-|==|!=|>|>=|<|<=)\s*([a-zA-Z]+[0-9…

php preg_replace两个或更多空格 - php

我正在寻找替换多个空格字符的实例。我最初的搜索似乎都集中在使用/s,但这包括换行符和其他空格我认为应该接近吗?用一个空格替换两个或更多实例空格" "preg_replace('/ {2,}/', ' ', $string); 参考方案 尝试一下:preg_replace('/\s\s+/&…

php regex-查找文本中带数字和空格的大写字符串 - php

我想编写php正则表达式来查找大写字符串,也可以从文本中包含一个数字和空格。例如,从此文本"some text to contain EXAM PL E 7STRING uppercase word"我要获取字符串-EXAM PL E 7STRING,找到的字符串应仅以大写字母开头和结尾,但在中间,不带大写字母的字母也可以包含(但不一定)…

号码或特定号码的正则表达式 - php

我无法为以下条件创建正则表达式。 var1 = '123' var2 = '-999' var3 = '$##99$#%' var4 = '-9999' var5 = '-123' var6 = '-99'` 条件:接受最大长度为10位数字…