diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/RegexPool.java b/hutool-core/src/main/java/cn/hutool/core/lang/RegexPool.java index b72f41a67..330775887 100755 --- a/hutool-core/src/main/java/cn/hutool/core/lang/RegexPool.java +++ b/hutool-core/src/main/java/cn/hutool/core/lang/RegexPool.java @@ -103,11 +103,12 @@ public interface RegexPool { /** * URL */ - String URL = "[a-zA-z]+://[^\\s]*"; + String URL = "[a-zA-Z]+://[\\w-+&@#/%?=~_|!:,.;]*[\\w-+&@#/%=~_|]"; /** - * Http URL + * Http URL(来自:http://urlregex.com/)
+ * 此正则同时支持FTP、File等协议的URL */ - String URL_HTTP = "(https://|http://)?([\\w-]+\\.)+[\\w-]+(:\\d+)*(/[\\w- ./?%&=:]*)?"; + String URL_HTTP = "(https?|ftp|file)://[\\w-+&@#/%?=~_|!:,.;]*[\\w-+&@#/%=~_|]"; /** * 中文字、英文字母、数字和下划线 */ diff --git a/hutool-core/src/test/java/cn/hutool/core/lang/ValidatorTest.java b/hutool-core/src/test/java/cn/hutool/core/lang/ValidatorTest.java index 63e4990d9..652985986 100644 --- a/hutool-core/src/test/java/cn/hutool/core/lang/ValidatorTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/lang/ValidatorTest.java @@ -230,7 +230,10 @@ public class ValidatorTest { @Test public void isUrlTest(){ - String content = "https://detail.tmall.com/item.htm?id=639428931841&ali_refid=a3_430582_1006:1152464078:N:Sk5vwkMVsn5O6DcnvicELrFucL21A32m:0af8611e23c1d07697e"; - System.out.println(Validator.isMatchRegex(Validator.URL_HTTP, content)); + String content = "https://detail.tmall.com/item.htm?" + + "id=639428931841&ali_refid=a3_430582_1006:1152464078:N:Sk5vwkMVsn5O6DcnvicELrFucL21A32m:0af8611e23c1d07697e"; + + Assert.assertTrue(Validator.isMatchRegex(Validator.URL, content)); + Assert.assertTrue(Validator.isMatchRegex(Validator.URL_HTTP, content)); } }