正则表达式检查字符串是否包含指定的字符以外的字符

时间:2013-09-10 15:42:50

标签: regex coldfusion coldfusion-8

如何检查字符串是否包含 以外的字符:

  • 字母(洛韦-案例/大写)

  • 空间

  • 逗号(

  • 期间(

  • 支架

  • &安培;

  • $

  • + (加)减去( - )( * )( = )算术运算符

  • /

在ColdFusion中使用正则表达式?

我想确保一个字符串除了指定的字符之外不包含任何单个字符。

3 个答案:

答案 0 :(得分:5)

你可以找到是否有这样的无效字符:

<cfif refind( "[^a-zA-Z0-9 ,.&'$()\-+*=/]" , Input ) >

    <!--- invalid character found --->

</cfif>

[ ... ]是一个字符类(匹配来自内部的任何一个字符),并且开头的^表示“NOT” - 即如果它找到任何不是被接受的字符的东西,它都会返回true。

我不明白“小括号(开幕式)”,但您猜是指<>?如果您希望(){}将它们交换掉。对于[],您需要将其作为\[\]

进行转义


字符类转义

在字符类中,只有少数字符需要使用反斜杠转义,这些是:

  • \ - 如果你想要一个文字反斜杠,请逃避它。
  • ^ - 如果它是第一个字符,则必须转义插入符号,否则它会否定该类。
  • - - 破折号创建范围。它必须被转义,除非第一个/最后一个(但建议总是如此)
  • [] - 两个括号都应该转义。

答案 1 :(得分:1)

ColdFusion使用Java的引擎来解析正则表达式,无论如何要确保字符串不包含您提到的其中一个字符,然后尝试:

^(?![a-zA-Z0-9 ,.&$']*[^a-zA-Z0-9 ,.&$']).*$

只有在逐行解析文件时,上述表达式才有效。如果要将其应用于包含多行的文本,则需要使用全局修饰符和多行修饰符,并将表达式更改为:

^(?![a-zA-Z0-9 ,.&$']*[^a-zA-Z0-9 ,.&$'\r\n]).*$

Regex101 Demo

答案 2 :(得分:0)

正则表达式:

[^][a-zA-Z0-9 ,.&'$]
如果字符串包含列表中的字符以外的任何字符,

将匹配。