java中对url校验的正则表达式如下:
String regex = "(ht|f)tp(s?)\\:\\/\\/[0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])*(:(0-9)*)*(\\/?)([a-zA-Z0-9\\-\\.\\?\\,\\'\\/\\\\&%\\+\\$#_=]*)?";
这里的“\\\\”四个斜杠,被解释后实际上是一个斜杠。
- java将“\\”解析为“\”
- 所以“\\\\”,java将会解析为“\\”交给正则表达式
- 正则表达式再经过一次转换,把\\转换成为\
所以,java里面要用正则来表示一个\, 必须写成4个\ 。如果要表示\\,那就要写8个\
public static boolean isUrl(String urls) {
if(StringUtils.isBlank(urls)) {
return true;
}
String regex = "(ht|f)tp(s?)\\:\\/\\/[0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])*(:(0-9)*)*(\\/?)([a-zA-Z0-9\\-\\.\\?\\,\\'\\/\\\\&%\\+\\$#_=]*)?";
Pattern pat = Pattern.compile(regex);
Matcher mat = pat.matcher(urls.trim());
boolean result = mat.matches();
return result;
}