網頁

2017/9/7

Regex 檢查字串中是否有中英文數字以外的符號

下面範例用檢查字串中是否含有中英文數字以外的符號

Pattern p = Pattern.compile("[^0-9a-zA-Z\u4e00-\u9fa5]");
   
String s1 = "abcde12345中文";
System.out.println(p.matcher(s1).find()); // false

String s2 = "abcde12345中文@";
System.out.println(p.matcher(s2).find()); // true

String s3 = "abcde12345中文¤¤­^¤å¼Æ¦r";
System.out.println(p.matcher(s3).find()); // true

因為^是在方括弧中並緊接於左刮弧後,代表排除後面串接的字。

上面regex的意思是,找出字串中任一不為數字(0-9),英文(a-zA-Z)及中文(\u4e00-\u9fa5)的字元,若找到這樣的字元回傳true,找不到回傳false。

可以用在找出上傳的文字檔中是否含有因轉碼錯誤產生的亂碼,若有的話可以做一些驗證或例外處理。

沒有留言:

張貼留言