1

reReplace用来从文件名中去除特殊字符。以下正则表达式在我的代码中引发异常(见下文)。但是,当我在ColdFusion 正则表达式实用程序中测试正则表达式字符串时,它工作得很好。

这是我的代码:

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

和错误:

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

CFML 编译器正在处理:

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

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

错误类型:模板:[N/A] 错误消息:在第 29 行第 45 列发现无效的 CFML 构造。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

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

4

1 回答 1

5

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

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

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

[{}\(\)\^$&%##!@=<>:;,~`'\'\*\?\/\+\|\[\\\\]|\]|\-
于 2012-10-02T19:47:51.343 回答