1

reReplaceファイル名から特殊文字を削除するために使用しています。次の正規表現は、私のコードで例外 (以下を参照) をスローします。ただし、ColdFusion Regex ユーティリティで正規表現文字列をテストすると、問題なく動作します。

これが私のコードです:

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.

@シンボルをエスケープすると、次の\@エラーが発生します。

エラーの種類: テンプレート: [該当なし] エラー メッセージ: 無効な 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

これらの文字を許可する必要があるため、 .andを削除しました。_

4

1 に答える 1

5

#正規表現の途中でエスケープされていないためです。

は CFML で特別な意味を#持つため、リテラルを使用する場合は、#としてエスケープする必要があることに注意してください##

したがって、正規表現は次のようになります。

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