2011-10-06 23 views
1

我使用這種模式[^a-z0-9+\ ,#\-.]過濾標籤,然後將它們保存到我的數據庫。正則表達式去除多餘的字符

它可以用於不希望的副作用;它刪除了重音符號:instalação變爲instalao

任何想法如何在保持模式的同時保持重音完好無損?

我使用ColdFusion,所以我假設它基於Java正則表達式,但我可能是錯的。

我的意圖是允許字母(帶重音符號),0到9阿拉伯數字,點和散列。

+0

@Bart,看更新! – Mohamad

+0

你確定ColdFusion有基於Java的正則表達式實現嗎? –

+0

@巴特爾,不是積極的,但我想象得如此。它與Java緊密集成,你可以直接調用java方法。 CF/Railo引擎分別運行在JRun/Tomcat上... – Mohamad

回答

5

根據the documentation\w匹配任何(Unicode)字母,數字和下劃線。如果你不想下劃線時,你可以這樣做:

[^[:alpha:]0-9#.-] 

其中[:alpha:]任何(Unicode)的字母相匹配。如果你想匹配0-9範圍之外的數字,嘗試:

[^[:alnum:]##.-] 

注意,額外的哈希逃脫ColdFusion的自己的標籤,否則會導致惡意形成的標籤/變量錯誤。

+0

刪除我的答案,以免造成混淆。 – Donut

+0

@Donut,你被拋出基地一點點,它是Java風格的正則表達式... –

+0

絕對是;我每天都會學到新的東西! – Donut

2

你試過了角色課嗎? \ w匹配字母,數字和下劃線,並且可能只是匹配重音字符,儘管我不確定。

2

使用

[^\w] 

\ w任何單詞字符匹配。在這種情況下,所有非單詞字符。 或

\W 

匹配所有非單詞字符。

+1

無需圍繞'\ W'放置括號。 –

+0

你是對的,謝謝。 – Valadas

相關問題