学习资料来源:https://www.cnblogs.com/libin-1/p/7004546.html
正则在线验证:
https://tool.oschina.net/regex#
解析:
pattern: /^(((ht|f)tps?):\/\/)?[\w-]+(\.[\w-]+)+([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?$/,
各个解析序号:
1. (ht|f) --ht or f
2. (ht|f)tps? https http ftps ftp
3. (((ht|f)tps?):\/\/)? (解析序号2的条件+://)or 没有这个条件
4.\w 任意一个字母或数字或下划线,A_Za_Z09,中任意一个
5.[]可以理解为,只要满足括号里面其中的某种条件
6.[\w-] 满足括号里面 任意字母或者数字 或者下划线或者-号(减号)
7.[\w-]+ 解析序号6的结果匹配一次或者多次
8.(\.[\w-]+)+ (.加上解析序号7的条件 ) 这个组 又匹配一次 或者多次 (如这个.123.ww-w 也是匹配的)
9.[\w.,@?^=%&:/~+#-]* []里面作何条件 匹配就行 * 匹配一次或者多次
10.[\w@?^=%&/~+#-] 同理 匹配里面的任何一个数
11.([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])? 匹配 解析序号9和解析序号10的条件 0次或者1次