你如何在ColdFusion正则表达式中引用unicode字符?

时间:2009-02-10 08:21:45

标签: regex unicode coldfusion

我正在尝试匹配这个我可以用alt-0146输入的字符。 Word告诉我它是unicode 0x2019但我似乎无法使用ColdFusion中的正则表达式来匹配它。这是我用来匹配2到10个字母和撇号以及这个字符的片段

[[:alpha:]'\x2019]{2,10}

但它不起作用。有什么想法吗?

2 个答案:

答案 0 :(得分:7)

看起来CF中的\ x缩写只支持前255个ASCII字符。为了超过这个数字,你需要像这样使用内联的chr命令:

<cfscript>
   yourString = "’";
   result = refind("[[:alpha:]'" & chr(8217) & "]{2,10}", yourString);
   writeOutput(result);
</cfscript>

那应该给你一个匹配。

答案 1 :(得分:2)

你可以尝试的另一件事是直接包括角色:

[[:alpha:]'#Chr(8217)#]{2,10}


但是我不确定这是否适用于CF正则表达式。如果没有,您仍然可以选择在CF中使用Java正则表达式。这很容易做到,并且使您能够使用更广泛的正则表达式功能,几乎可以肯定包括unicode支持。

如果您正在进行替换,可以直接在CF字符串上执行Java Regex,例如:

<cfset NewString = OrigString.replaceAll( 'ajavaregex' , 'replacement' )/>


对于其他功能(例如获取匹配数组,替换时的回调函数),我创建了Java RegEx Utilities - 一个将这些功能简化为单个函数调用的组件。