java 正则表达式 全角字符,如何检查String中是否包含全角字符

Can anyone suggest me how to check if a String contains full width characters in Java? Characters having full width are special characters.

Full width characters in String:

abc@gmail.com

Half width characters in String:

abc@gmail.com

解决方案

I'm not sure if you are looking for any or all, so here are functions for both:

public static boolean isAllFullWidth(String str) {

for (char c : str.toCharArray())

if ((c & 0xff00) != 0xff00)

return false;

return true;

}

public static boolean areAnyFullWidth(String str) {

for (char c : str.toCharArray())

if ((c & 0xff00) == 0xff00)

return true;

return false;

}

As for your half width '.' and possible '_'. Strip them out first with a replace maybe:

String str="abc@gmail.com";

if (isAllFullWidth(str.replaceAll("[._]","")))

//then apart from . and _, they are all full width

Regex

Alternatively if you want to use a regex to test, then this is the actual character range for full width:

[\uFF01-\uFF5E]

So the method then looks like:

public static boolean isAllFullWidth(String str) {

return str.matches("[\\uff01-\\uff5E]*");

}

You can add your other characters to it and so not need to strip them:

public static boolean isValidFullWidthEmail(String str) {

return str.matches("[\\uff01-\\uff5E._]*");

}