2017-03-09 81 views
2

我的密碼應至少包含下面列表中的一個特殊字符。ColdFusion中的格式不正確

@ % +/! # $^? : , { } () [ ] ~ - _.`

我用下面的代碼試過這種ColdFusion的,但它是扔硬錯誤說:

畸形的正則表達式「@%+ /#$ ^?: {}()[]〜`-_」

<cfif REFind("@%+/!##$^?:,{}()[]~`-_",arguments.myPassword) IS 0> 
// some business logic 
</cfif> 

可以在任何一個可以幫助我解決這個問題?

+0

嘗試'轉義 「[!@%+ /#$ ^:?,{}()[\\]〜\'_.-]」' –

回答

2

你的正則表達式是畸形,因爲[`-_]forms an invalid range

使用

<cfif REFind("[@%+/!##$^?:,{}()[\\]~`_.-]",arguments.myPassword) IS 0> 

此處,應注意的是

  • 一個[...]是一個字符類,它1種炭形式所定義的集/符號匹配類
  • -內部是在端部從而字符類和被視爲文字-
  • ]插件IDE字符類必須以文字\
+0

的當我給這個正則表達式時錯誤消失了。但是,當我給正則表達式[@%+ /!## $ ^?:,{}()\ [\]〜'_-] ....時,它給了我正確的答案。是否有區別? – user3742125

+0

角色類中的'''是否被轉義?它必須逃脫。你測試的字符串是什麼?請注意,您不需要使''符號加倍,只需使用一個即可。 –

+0

#必須加倍,否則CFML編譯器會拋出錯誤。測試sttring:2Password ## – user3742125