java中用正则表达式判断字符串是否包含中文

本文提供了一个使用Java实现的简单示例程序,用于检测字符串中是否包含中文字符。通过正则表达式匹配方法,该程序能够判断输入的文本是否含有中文,并返回相应的布尔值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. import java.util.regex.Matcher;  
  2. import java.util.regex.Pattern;  
  3. public class demo {  
  4.     static String regEx = "[\u4e00-\u9fa5]";   
  5.     static Pattern pat = Pattern.compile(regEx);  
  6.   public static void main(String[] args) {  
  7.       String input = "你好 世界";
  8.       System.out.println(isContainsChinese(input));     
  9.       input = "hello world";
  10.       System.out.println(isContainsChinese(input));     
  11.     }  
  12.    public static boolean isContainsChinese(String str)     
  13.     {    
  14.         Matcher matcher = pat.matcher(str);     
  15.         boolean flg = false;  
  16.         if (matcher.find())    {    
  17.             flg = true;   
  18.         }     
  19.         return flg;     
  20.     }  
  21.  
  22. }

可以使用以下正则表达式来匹配一段文字中是否包含链接或文字首尾不能添加[]或【】或特殊字符: ``` ^(?!.*[\[\【\]】\/\.\#\:\-\,\。])(.*((https?|ftp):\/\/)?[\w\-]+(\.[\w\-]+)+\.?(:\d+)?(\/\S*)?)?(?!.*[\[\【\]】\/\.\#\:\-\,\。]).*$ ``` 这个正则表达式的含义是: - `^` 表示匹配输入字符串的开始位置。 - `(?!.*[\[\【\]】\/\.\#\:\-\,\。])` 表示后面不能有[]或【】或特殊字符。 - `(` 表示开始匹配链接的部分。 - `(` 表示开始匹配协议的部分,可以是 http、https 或 ftp。 - `s?` 表示匹配一个可选的 s 字符。 - `:\/\/` 表示匹配 :// 字符。 - `)?` 表示链接协议部分的匹配是可选的。 - `[\w\-]+(\.[\w\-]+)+` 表示匹配一个域名。 - `\.?(:\d+)?` 表示匹配可选的端口号。 - `(\/\S*)?` 表示匹配可选的路径部分。 - `)` 表示链接部分匹配结束。 - `?` 表示链接部分是可选的。 - `(?!.*[\[\【\]】\/\.\#\:\-\,\。])` 表示前面不能有[]或【】或特殊字符。 - `.*` 表示匹配输入字符串的任意字符。 - `$` 表示匹配输入字符串的结束位置。 使用 Java 中的 Matcher 类的 matches 方法可以判断字符串是否匹配这个正则表达式。例如: ```java import java.util.regex.Matcher; import java.util.regex.Pattern; public class LinkMatcher { public static void main(String[] args) { String text1 = "这是一段没有链接的文字。"; String text2 = "这是一段包含链接的文字:https://www.example.com。"; String text3 = "这是一段包含特殊字符的文字:[test]。"; Pattern pattern = Pattern.compile("^(?!.*[\\[\\]\\【\\】\\/\\.\\#\\:\\-\\,\\。])(.*((https?|ftp):\\/\\/)?[\\w\\-]+(\\.[\\w\\-]+)+\\.?(:\\d+)?(\\/\\S*)?)?(?!.*[\\[\\]\\【\\】\\/\\.\\#\\:\\-\\,\\。]).*$"); Matcher matcher1 = pattern.matcher(text1); System.out.println(text1 + " 匹配结果:" + matcher1.matches()); Matcher matcher2 = pattern.matcher(text2); System.out.println(text2 + " 匹配结果:" + matcher2.matches()); Matcher matcher3 = pattern.matcher(text3); System.out.println(text3 + " 匹配结果:" + matcher3.matches()); } } ``` 输出结果为: ``` 这是一段没有链接的文字。 匹配结果:true 这是一段包含链接的文字:https://www.example.com。 匹配结果:false 这是一段包含特殊字符的文字:[test]。 匹配结果:false ``` 可以看到,第一段文字匹配成功,而第二段和第三段文字都包含了不允许的特殊字符,所以匹配失败。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值