ColdFusion 中格式错误的正则表达式

Malformed regular expression in ColdFusion

我的密码应至少包含下表中的一个特殊字符。

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

我使用以下代码在 ColdFusion 中尝试了此操作,但它抛出了硬错误:

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

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

谁能帮我解决这个问题?

您的正则表达式格式不正确,因为 [`-_] forms an invalid range.

使用

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

这里,注意

  • a [...] 是一个字符 class,匹配 class
  • 中定义的 sets/symbols 中的 1 个字符
  • - 位于字符 class 的末尾,因此被视为文字 -
  • 字符 class 中的
  • ] 必须使用文字 \
  • 进行转义