2017-03-09 80 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