我正在使用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
我删除了.
和_
,因为这些字符应该被允许。
答案 0 :(得分:5)
因为你在正则表达式的中间有一个未转义的#
。
请记住#
在CFML中具有特殊含义,因此如果您想使用文字#
,则需要将其转义为##
。
所以你的正则表达式应该是:
[{}\(\)\^$&%##!@=<>:;,~`'\'\*\?\/\+\|\[\\\\]|\]|\-