2010-02-18 31 views
1

有人可以告訴我如何做一個Java正則表達式,它接受一個字符串並返回一個字符串,但刪除了所有字符但是a-z和0-9?Java正則表達式幫助

I.e.給出一個字符串a%4aj231*9.+它會返回a4aj2319

謝謝。

回答

1

\ d是數字,\ p {L}是a-z和A-Z。

str.replaceAll("[^\\d\\p{L}]", ""); 
+0

感謝您的快速回復。我剛剛意識到,如果我想保留空間以及呢? – vbn 2010-02-18 03:26:46

+0

只需在方括號內添加任何不想替換的字符即可。 – lins314159 2010-02-18 03:27:28

+0

\ p {L}也匹配大量的其他Unicode字符,例如Δ,ね和傻。這種表達會使它們完整無缺。 – Sean 2010-02-18 04:13:59

0

如果你想AZ和0-9,但不AZ然後

str.replaceAll("[^\\p{Lower}\\p{Digit}]", ""); 
+0

我沒有和\ w一起去,因爲它也包含下劃線。 – lins314159 2010-02-18 03:34:21

+0

你說得對,我會改變這一點 – Lombo 2010-02-18 04:32:27

0
str = str.replaceAll("[^a-z0-9]+", ""); 

如果你還意味着包括大寫字符,那麼你可以使用

str = str.replaceAll("[^A-Za-z0-9]+", ""); 

或稍微發飆

str = str.replaceAll("[_\\W]+", "");