2012-10-02 1 views
1

나는 파일 이름에서 특수 문자를 제거하기 위해 reReplace을 사용하고 있습니다. 다음 정규식은 내 코드에서 예외 (아래 참조)를 throw합니다. 그러나, 내가 ColdFusion Regex Utility 정규식 문자열을 테스트 할 때 그것은 잘 작동합니다.ColdFusion에서 특수 문자를 제거하는 정규식에 오류가 발생하는 이유는 무엇입니까?

Error Type: Template : [N/A] Error Messages: Invalid CFML construct found on line 29 at column 45. ColdFusion was looking at the following text:

\\ The CFML compiler was processing:

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

내 원래 소스 : 나는 \@으로 @ 기호를 탈출하면 나는이 오류가

Error Messages: Invalid token @ found on line 29 at column 45.

The CFML compiler was processing:

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

:

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

그리고 오류 : 여기

내 코드입니다 이 정규식 문자열의 경우 : Regex to Strip Special Characters

이러한 문자는 허용되어야하므로 ._이 삭제되었습니다.

+0

당신이'탈출 시도 해 봤나'대신!? –

+0

방금 ​​해봤습니다. 이제 저는 29 행 30 열의 \로 시작하는 표현식을 얻습니다.이 메시지는 대개 표현 구조의 문제로 인해 발생합니다. – eterps

답변

5

정규식의 중간에 이스케이프 처리되지 않은 #이 있으므로

#은 CFML에서 특별한 의미가 있으므로 문자형 #을 사용하려면 ##으로 이스케이프 처리해야합니다.

그래서 정규식은 다음과 같아야합니다

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

omg. 이제 손바닥 모양의 움푹 들어간 이마가 있습니다. 감사합니다! – eterps

+0

이 표현식에 잘못 입력 된 문자가 * 많이 * 있습니다 . ^ $ *. +?() [] {} \이 (가) 필요한 문자 만 이스케이프 처리하도록 두 번째로주의하십시오. | –

+0

그 중 많은 문자가 이스케이프 처리가 필요하지 않습니다.보다 간단한 버전이 있습니다 :'[{}()^$ & % ##! @ = <: :;, ~ \' '*?/+ | \ [\] \ - \\]'- 앞에 백 슬래시를 붙이면되는 문자는'[''''''''\\'('^'는 처음이라면 필요하다. –