正则表达式检验url

最近在编写一个java中间件,其间要用到协议绑定。以便得到的数据能传给有效的URL地址。这就涉及到验证客户端所给的url是否有效的问题。从网上查了查,发现没有太合适的。就结合自己的理解写了些正则表达式。下为例子代码,希望大家能多指出其中的问题。

 

import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class CheckURL {
	private String uri;

	public CheckURL(String uri) {
		super();
		this.uri = uri;
	}
	
	/**
	 * 检验该uri是否合法
	 * @return
	 */
	public boolean isValid(){
		boolean isValid = false;
		//正则表达式检验ip地址
		String ipRegex = "((25[0-5]|2[0-4]\\d|1\\d\\d|\\d{1,2})\\.(25[0-5]|2[0-4]\\d|1\\d\\d|\\d{1,2})\\.(25[0-5]|2[0-4]\\d|1\\d\\d|\\d{1,2})\\.(25[0-5]|2[0-4]\\d|1\\d\\d|\\d{1,2}))";
		//正则表达式检验域名
		String domain = "([0-9a-z][0-9a-z-]*\\.)*[a-z]{2,6}|localhost";
		//检验端口
		String port = "(:[0-9]{1,4})";
		//检验剩余的URL是否合法其中[\u4e00-\u9fa5]表示中文
		String remain = "(/[\\w!~*'()\\.;?:@&=+$,%#-[\u4e00-\u9fa5]]*)+/?$";
		//该表达式用于检验http格式的URL是否合法
		String httpRegex = "^http://"+"("+ipRegex+"|"+domain+")"+port+"?"+remain;
		Pattern p = Pattern.compile(httpRegex,Pattern.CASE_INSENSITIVE);
		Matcher m = p.matcher(this.uri);
		isValid = m.find();
		return isValid;
	}
}

 

你可能感兴趣的:(中间件,正则表达式)