java判断url合法_Java中正则验证URL是否合法

public static boolean isURL(String str){

//转换为小写

str = str.toLowerCase();

String regex = "^((https|http|ftp|rtsp|mms)?://)"  //https、http、ftp、rtsp、mms

+ "?(([0-9a-z_!~*‘().&=+$%-]+: )?[0-9a-z_!~*‘().&=+$%-]+@)?" //ftp的user@

+ "(([0-9]{1,3}\\.){3}[0-9]{1,3}" // IP形式的URL- 例如:199.194.52.184

+ "|" // 允许IP和DOMAIN(域名)

+ "([0-9a-z_!~*‘()-]+\\.)*" // 域名- www.

+ "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\\." // 二级域名

+ "[a-z]{2,6})" // first level domain- .com or .museum

+ "(:[0-9]{1,5})?" // 端口号最大为65535,5位数

+ "((/?)|" // a slash isn‘t required if there is no file name

+ "(/[0-9a-z_!~*‘().;?:@&=+$,%#-]+)+/?)$";

return  str.matches(regex);

}

原文:https://www.cnblogs.com/gongqijundemao/p/11049785.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 进行正则匹配时,由于需要进行模式匹配、回溯等操作,因此正则表达式的效率可能会受到一些影响。为了测试 Java 正则表达式的匹配性能,可以使用 Java 自带的 Benchmark 工具类,对不同的正则表达式进行测试,比较它们的性能。 以下是一个简单的示例代码,用于测试不同正则表达式的匹配性能: ```java import java.util.regex.*; public class RegexBenchmark { private static final String REGEX1 = ".*hello.*world.*"; private static final String REGEX2 = ".*world.*hello.*"; private static final String INPUT = "hello world!"; public static void main(String[] args) { Pattern pattern1 = Pattern.compile(REGEX1); Pattern pattern2 = Pattern.compile(REGEX2); long startTime = System.nanoTime(); for (int i = 0; i < 100000; i++) { Matcher matcher1 = pattern1.matcher(INPUT); Matcher matcher2 = pattern2.matcher(INPUT); matcher1.matches(); matcher2.matches(); } long endTime = System.nanoTime(); long duration = (endTime - startTime) / 1000000; System.out.println("Duration: " + duration + " ms"); } } ``` 在上述示例代码,定义了两个正则表达式 `REGEX1` 和 `REGEX2`,以及一个匹配字符串 `INPUT`。然后使用 `Pattern` 类将正则表达式编译成模式,并使用 `Matcher` 类进行匹配。 在主函数,使用 `System.nanoTime()` 记录开始时间和结束时间,并执行 100000 次正则匹配操作。最后计算出执行时间并输出。 可以尝试修改 `REGEX1` 和 `REGEX2` 的值,比较它们的匹配效率。需要注意的是,正则表达式的性能可能会受到多种因素的影响,如正则表达式的复杂度、匹配字符串的长度等。因此需要根据实际情况进行测试和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值