2014-07-14 53 views
-4

我正在處理這個簡單的正則表達式。我正在使用正則表達式來清理一些數據。我有一個允許的字符列表。然後我需要正則表達式來匹配任何不在允許的字符列表中的東西。聽起來很複雜,但它非常簡單。這裏是正則表達式我放在一起:我找不出這個正則表達式

(?i)^[a-zA-Z0-9\s\.\(\"\'\:\;\%\/\-]*$ 

允許的字符是:

a-z 
A-Z 
0-9 
\s 
. 
(
) 
" 
' 
: 
; 
% 
/
- 
_ 

不知道我在做什麼錯了,因爲我的正則表達式dosent似乎在所有

+0

你在角色課上忘了')'。 – Bergi

+0

等等......您是否指定了大小寫不敏感('(?i)'),然後放入'a-zA-Z'?爲什麼?你也沒有真正指定'_',就像你認爲的那樣。 – Unihedron

回答

2

你想回到什麼[^(開始negated character class),但有^[string beginning之後的字符類別)。

(?i)[^a-z0-9\s.()"':;%/\-_] 

將匹配不允許的每個字符。

+0

這似乎是一種工作。它確實返回 - 但是在我的數據中 - 是允許的字符。有一種字符是來自另一種語言(不是英語),我試圖獲得回報,因此我們可以列出允許的字符 – Allsystems

+0

@Allsystems轉義'-'。此外,答案也應該讓它逃脫,否則它會匹配'/ -_'作爲範圍。 – Unihedron

+0

感謝所有幫助的人。我設法修復它。 Bergi的答案是正確的答案。我只是添加了其他允許的字符。偉大的地方StackOverFlow。我第一次使用它,答覆如此之快。 Bergi我不知道如何添加「rep」,否則我會爲你提供幫助 – Allsystems