是否可以编写一个正则表达式来检查字符串(javascript和php代码)是否缩小?
是否可以编写一个正则表达式来检查字符串(某些代码)是否缩小 许多PHP/JS模糊处理程序删除空白字符(以及其他内容)。 因此,最终缩小的代码有时如下所示:是否可以编写一个正则表达式来检查字符串(javascript和php代码)是否缩小?,php,javascript,regex,obfuscation,Php,Javascript,Regex,Obfuscation,是否可以编写一个正则表达式来检查字符串(某些代码)是否缩小 许多PHP/JS模糊处理程序删除空白字符(以及其他内容)。 因此,最终缩小的代码有时如下所示: PHP: $a=array();if(is_array($a)){echo'ok';} JS: a=[];if(typeof(a)=='object'&&(a instanceof Array){alert('ok')} 在这两种情况下,在“{”、“}”、“;”等之前和之后都没有空格字符。还有一些其他模式可以提供帮助。我并
PHP:
$a=array();if(is_array($a)){echo'ok';}
JS:
a=[];if(typeof(a)=='object'&&(a instanceof Array){alert('ok')}
在这两种情况下,在“{”、“}”、“;”等之前和之后都没有空格字符。还有一些其他模式可以提供帮助。我并不期待一个高精度的正则表达式,只需要一个检查是否至少100个字符的字符串看起来像缩小的代码。
谢谢你的建议
用途:网络恶意软件扫描器我认为缩小程序将删除所有换行符,尽管如果缩小代码粘贴回文本编辑器,文件末尾可能仍有一个换行符。类似的内容可能相当准确:
/^[^\n\r]+(\r\n?|\n)?$/
这只是测试在整个事件中没有换行符,除了结尾可能有一个。因此没有保证,但我认为它在任何较长的代码块上都能很好地工作。我认为一个缩略器将删除所有换行符,尽管如果缩略后的代码被粘贴回文本编辑器中,文件末尾可能仍然有一个。类似的内容可能相当准确:
/^[^\n\r]+(\r\n?|\n)?$/
这只是测试在整个事件中没有换行符,除了结尾可能有一个。因此没有保证,但我认为它在任何较长的代码块上都能很好地工作。没有。因为语法/代码及其意图没有改变,一些非常熟悉php和/或js的人会在一行上编写简单的函数,而没有任何空格(me:s) 你可以做的是计算一个字符串中的所有空白字符,尽管这也不可靠,因为有些东西你只需要空白,比如x instanceof y heh。此外,并非所有代码都被缩小并压缩到一行中(参见jQueryUI),因此您也不能指望这一点
也许你可以解释为什么你需要知道这一点,我们可以试着找到一个替代方案?不。因为语法/代码及其意图没有改变,一些非常熟悉php和/或js的人会在一行上编写简单的函数,而没有任何空格(me:s) 你可以做的是计算一个字符串中的所有空白字符,尽管这也不可靠,因为有些东西你只需要空白,比如x instanceof y heh。此外,并非所有代码都被缩小并压缩到一行中(参见jQueryUI),因此您也不能指望这一点 也许你可以解释一下为什么你需要知道这一点,我们可以试着找到一个替代方案?简单的回答是“不”,regex无法做到这一点 您最好的选择可能是对源文件进行统计分析,并与一些已知的启发式方法进行比较。例如,将变量名与最小化代码中常见的变量名进行比较。最小化的文件可能有很多单字符变量名,例如。。。在所有一个字符的变量名用完之前,不会有两个字符的变量名。。。等等 另一种选择是通过最小化程序运行源文件,并查看输出是否与输入有足够的不同。如果不是,它可能已经被最小化了 但我必须同意sg3s的最后一句话:如果你能解释你为什么需要这个,我们可能会为你的实际需要提供更有用的答案。简短的回答是“不”,regex无法做到这一点 您最好的选择可能是对源文件进行统计分析,并与一些已知的启发式方法进行比较。例如,将变量名与最小化代码中常见的变量名进行比较。最小化的文件可能有很多单字符变量名,例如。。。在所有一个字符的变量名用完之前,不会有两个字符的变量名。。。等等 另一种选择是通过最小化程序运行源文件,并查看输出是否与输入有足够的不同。如果不是,它可能已经被最小化了
但我必须同意sg3s的最后一句话:如果你能解释你为什么需要这个,我们可能会为你的实际需要提供更有用的答案。你无法判断它是缩小了还是只是手工编写的(可能只适用于较小的脚本)。但是您可以检查它是否包含不必要的空格 看看开源模糊器/迷你器,看看它们使用什么规则来删除空白。验证是否应用了这些规则应该有效,如果正则表达式变得复杂,可能需要一个简单的解析器
只需确保像
a=“if(b)”
这样的字符串文本被排除在外。您无法判断它是被缩小了还是只是手工编写的(可能只适用于较小的脚本)。但是您可以检查它是否包含不必要的空格
看看开源模糊器/迷你器,看看它们使用什么规则来删除空白。验证是否应用了这些规则应该有效,如果正则表达式变得复杂,可能需要一个简单的解析器
只要确保像
a=“if(b)”
这样的字符串文本被排除在外。通过该特定语言的解析器运行它(即使是修饰语也可以正常工作),然后修改它以计算未使用的字符数。使用文档中未使用字符的百分比与字符数作为缩小测试。我不认为使用正则表达式可以准确地做到这一点,尽管计算空白与文档内容可能没问题。通过该特定语言的解析器运行它(即使是修饰语也可以),然后修改它以计算未使用的字符数。使用文档中未使用字符的百分比与字符数作为缩小测试。我不认为你能用正则表达式准确地做到这一点,