我試圖匹配這個字符,我可以鍵入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