2012-04-16 169 views
11

我在遵循規則下找到了一個正則表達式。正則表達式包含和排除特殊字符

允許的字符

字母:A-Z/A-Z
編號:0-9
特殊字符:〜@#$^& *() - _ + = [] {} | \,。 ? :
(空格應該被允許)

不允許

特殊字符:<>'「/;`%

+0

其餘的角色呢?他們是否被允許? – 2012-04-16 11:47:55

+0

你有沒有試圖想出一個?你對此有何疑問? – fivedigit 2012-04-16 11:48:04

+2

你只是想讓我們知道你找到了它?謝謝。也許這也可以幫助你:http://www.regular-expressions.info/ – 2012-04-16 11:50:46

回答

25

對於允許的字符,你可以使用

^[[email protected]#$^*()_+=[\]{}|\\,.?: -]*$ 

驗證一個完整的字符串,應該只包含允許的字符,注意-最後(因爲否則它就是一個範圍),並且有幾個字符會被轉義出來

對於無效字符,你可以使用

[<>'"/;`%] 

即可查詢到。

雙方合併成一個單一的正則表達式,你可以使用

^(?=[[email protected]#$^*()_+=[\]{}|\\,.?: -]*$)(?!.*[<>'"/;`%]) 

,但你需要一個正則表達式引擎,允許先行。

+0

你能否請澄清我應該如何使用你的正則表達式來僅允許我的字符串中的這些字符並將其餘所有字符轉換爲空格字符? – 2012-11-08 15:33:20

+0

提出問題。 – Joey 2012-11-08 16:00:33

+0

這個答案幫了我,謝謝@Joey:D +1 – Anton 2016-05-31 13:33:48

7

您還沒有真正問了一個問題,但假設你有一個,這可能是你的答案...

假設所有字符,除了「特殊字符」被允許,你可以寫

String regex = "^[^<>'\"/;`%]*$"; 
+0

你能否請澄清我應該如何使用你的正則表達式來僅允許我的字符串中的這些字符並將其餘所有字符轉換爲單個空格字符? – 2012-11-08 15:57:40

+2

@ user01'text = text.replaceAll(「[<>'\」/;%]「,」「);'或者如果你想結合多個特殊字符和空格'text = text.replaceAll(」[< '\「/;%] +」,「」);' – 2012-11-08 16:02:47

+0

非常感謝,但在我的情況下,不允許的字符都是允許的字符(允許的字符與問題中相同)。你能建議怎麼做,指定允許的:a-z/A-Z /0-9〜@#$ ^&*() - _ + = [] {} | \,。 ? : – 2012-11-08 16:11:16

3
[[email protected]#\^\$&\*\(\)-_\+=\[\]\{\}\|\\,\.\?\s]* 

如果您只想允許將它包裝在^ $或您認爲合適的任何其他分隔符中(如果您這樣做),則不需要特定的禁止邏輯。