java正则判断字符串是否包含中文

 

 

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()都可以。

猜你喜欢

转载自summerbell.iteye.com/blog/1634362