我试图匹配这个字符,我可以键入alt-0146。 Word告诉我这是unicode 0x2019,但我似乎无法使用ColdFusion中的正则表达式匹配它。这里有一个片段我使用字母匹配和撇号2和10之间的和这个人物如何在ColdFusion正则表达式中引用unicode字符?
[[:alpha:]'\x2019]{2,10}
,但它不工作。有任何想法吗?
我试图匹配这个字符,我可以键入alt-0146。 Word告诉我这是unicode 0x2019,但我似乎无法使用ColdFusion中的正则表达式匹配它。这里有一个片段我使用字母匹配和撇号2和10之间的和这个人物如何在ColdFusion正则表达式中引用unicode字符?
[[:alpha:]'\x2019]{2,10}
,但它不工作。有任何想法吗?
它看起来像CF中的\ x速记只支持前255个ASCII字符。为了超过这个数字,你需要使用这样的内联chr命令:
<cfscript>
yourString = "’";
result = refind("[[:alpha:]'" & chr(8217) & "]{2,10}", yourString);
writeOutput(result);
</cfscript>
这应该会给你一个匹配。
另一件事你可以尝试直接包括人物:
[[:alpha:]'#Chr(8217)#]{2,10}
但是我不知道是否会与CF正则表达式工作。如果没有,您仍然可以选择在CF中使用Java正则表达式。这很容易做到,并且使您能够使用更广泛的正则表达式功能,几乎可以肯定地包括unicode支持。
如果你正在做的替代品,你可以直接在CF字符串做一个Java正则表达式,例如:
<cfset NewString = OrigString.replaceAll('ajavaregex' , 'replacement')/>
对于其他功能(如获得比赛的阵列,在更换回调函数),我创建了Java RegEx Utilities - 一个单一组件,可将这些功能简化为单个函数调用。
谢谢。我正在进行匹配/数据验证,而不是真正有能力更改验证代码来使用您的便利实用程序:/ – Trigger 2009-02-10 15:21:19
Spot on!谢谢。 – Trigger 2009-02-10 15:40:18