2009-02-10 33 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

相關問題