2009-02-10 52 views
4

我试图匹配这个字符,我可以键入alt-0146。 Word告诉我这是unicode 0x2019,但我似乎无法使用ColdFusion中的正则表达式匹配它。这里有一个片段我使用字母匹配和撇号2和10之间的和这个人物如何在ColdFusion正则表达式中引用unicode字符?

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

,但它不工作。有任何想法吗?

回答

7

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

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

这应该会给你一个匹配。

+0

Spot on!谢谢。 – Trigger 2009-02-10 15:40:18

2

另一件事你可以尝试直接包括人物:

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


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

如果你正在做的替代品,你可以直接在CF字符串做一个Java正则表达式,例如:

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


对于其他功能(如获得比赛的阵列,在更换回调函数),我创建了Java RegEx Utilities - 一个单一组件,可将这些功能简化为单个函数调用。

+0

谢谢。我正在进行匹配/数据验证,而不是真正有能力更改验证代码来使用您的便利实用程序:/ – Trigger 2009-02-10 15:21:19