java正则判断字符串是否包含中文
Java代码
1.String s="大牛这孩";
2.Pattern pattern=Pattern.compile("[\u4e00-\u9fa5]");
3.Matcher matcher=pattern.matcher(s);
4.System.out.println(matcher.matches());
String s="大牛这孩";
Pattern pattern=Pattern.compile("[\u4e00-\u9fa5]");
Matcher matcher=pattern.matcher(s);
System.out.println(matcher.matches());
为什么我在javascript下用4e00-9fa5可以行,在java下不行呢?
我用new String(s.getBytes(),"UTF-8")转换后试了也不行,那就排除原始内容编码的问题了。
采纳的答案
首先是因为那个正则表达式需要更多的转义:
Java代码
1."[\\u4e00-\\u9fa5]+"
"[\\u4e00-\\u9fa5]+"
因为Java的字符串要先对\\做转义……
其次是因为matcher.matches()没用对。这个方法等同于自动在pattern的前后加上^和$,显然这个字符串超过了长度1,所以匹配失败了。用matcher.find()或者matcher.lookingAt()都可以。