gpt4 book ai didi

javascript - JS 编译器删除正则表达式中的转义 (\) 字符

转载 作者:行者123 更新时间:2023-11-29 18:28:38 24 4
gpt4 key购买 nike

我最近一直在努力解决一个关于在我们的 ant 构建任务的压缩/最小化阶段编译 javascript 正则表达式的问题。

基本上,问题在于每个 javascript 正则表达式,即:

var x = y.replace(/(\d|\.)/g, '');

将其转义字符压缩并替换如下:

var x = y.replace(/(d|.)/g, '');

这变得非常烦人,因为项目进展迅速,而我的测试在构建阶段由于此类问题而不断失败。

这些是我尝试过的:

编译器工具:

形成正则表达式的不同方式:

// Same problem occurs when regex placed inside a string
var x = y.replace(new RegExp('(\\d|\\.)', 'g'), '');

从 Ant 中调用编译器/压缩器的不同方法:

<!-- Closure Compiler Ant Task -->
<taskdef name="jscomp" classname="com.google.javascript.jscomp.ant.CompileTask"
classpath="lib/compiler.jar"/>

<!-- Executable called from command line -->
<exec executable="java" dir=".">
<arg line="-jar lib/compiler.jar" />
<!-- other args -->
</exec>

运行 Ant 任务的不同操作系统:

  • Mac 操作系统
  • Windows 7
  • Unix

关于如何在此处进行的任何想法?

我发现 Closure Compiler 和 YUI Compressor 都会遇到解析正则表达式的问题,这太巧合了,所以也许问题出在其他地方......

非常感谢任何输入。

更新

正如乍得在下面提到的,Closure Compiler service没有报告相同的问题,这意味着问题一定出在 ANT(或底层控制台进程)处理输入/输出字符串的方式上。

目前完成此操作的方法是通过 (google) 编译器 ant 任务,使用相同的文件作为进程的输入和输出(请注意,通过使用命令行调用会发生相同的问题)。

<!-- CLOSURE COMPILER MACRO -->
<!-- @see http://code.google.com/p/closure-compiler/wiki/BuildingWithAnt -->
<macrodef name="compile">
<attribute name="file" />
<sequential>
<echo>Compiling @{file}</echo>
<jscomp compilationLevel="simple" warning="quiet"
debug="false" output="@{file}">
<sources dir=".">
<file name="@{file}"/>
</sources>
</jscomp>
</sequential>
</macrodef>

<!-- ACTUAL USAGE -->
<compile file="${local.output.dir}/app.js" />

最佳答案

我无法在此处重现此问题:

http://closure-compiler.appspot.com/home

这段代码:

// ==ClosureCompiler==
// @compilation_level SIMPLE_OPTIMIZATIONS
// @output_file_name default.js
// @formatting pretty_print
// ==/ClosureCompiler==

y.replace(/(\d|\.)/g, '');

编译为:

y.replace(/(\d|\.)/g, "");

似乎其他东西正在更改您的代码,您是否对脚本进行了任何预处理或后处理?

关于javascript - JS 编译器删除正则表达式中的转义 (\) 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10615399/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com