下面範例用檢查字串中是否含有中英文數字以外的符號
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。
可以用在找出上傳的文字檔中是否含有因轉碼錯誤產生的亂碼,若有的話可以做一些驗證或例外處理。
沒有留言:
張貼留言