为什么ColdFusion会在正则表达式上抛出错误来删除特殊字符?

时间:2012-10-02 19:26:22

标签: regex coldfusion coldfusion-9

我正在使用reReplace从文件名中删除特殊字符。以下正则表达式在我的代码中抛出异常(见下文)。但是,当我在ColdFusion Regex Utility中测试正则表达式字符串时,它的工作正常。

这是我的代码:

reReplace(tmpName,"[{}\(\)\^$&%#!@=<>:;,~`'\'\*\?\/\+\|\[\\\\]|\]|\-",'','all')

错误:

  

错误消息:第45行第29行找到无效的令牌@。

     

CFML编译器正在处理:

An expression beginning with !, on line 29, column 44.This message is usually caused by a problem in the expressions structure.

如果我使用@转义\@符号,我会收到此错误:

  

错误类型:模板:[N / A]错误消息:无效的CFML构造   在第29行的第45栏中找到.ColdFusion正在研究以下内容   文本:

     

\\   CFML编译器正在处理:

An expression beginning with !, on line 29, column 44.This message is usually caused by a problem in the expressions structure.

此正则表达式字符串的原始来源是:Regex to Strip Special Characters

我删除了._,因为这些字符应该被允许。

1 个答案:

答案 0 :(得分:5)

因为你在正则表达式的中间有一个未转义的#

请记住#在CFML中具有特殊含义,因此如果您想使用文字#,则需要将其转义为##

所以你的正则表达式应该是:

[{}\(\)\^$&%##!@=<>:;,~`'\'\*\?\/\+\|\[\\\\]|\]|\-