在编写正则之前,需要罗列出所有可能存在的情况
协议, 分别有 https,http,ftp 出现的次数是 0-1 次
https://
http://
ftp://
无协议开头
规则 :(((http|ftp|https)://)?)
知识点 :
-
|
或 匹配左或者右 都为 True -
()
表达式中有几个()就有几个相应的匹配字符串。 -
?
匹配模式是非贪婪的,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。
Host 也就是域名
123.com
adc.com
adc.net
规则:([a-zA-Z0-9._-]*)
知识点:
-
[]
指定范围 a-z 会匹配 a 到 z 之间的字符,同理 A-Z 是大写的字幕, 0-9是数字 -
\\
因为匹配的 . 是正则里面的关键字,需要转义 , 反斜杠的作用就是转义,也就是将后面的字符将不作为关键字执行 -
*
匹配前面的子表达式零次或多次
匹配端口
:8080
规则:(:[0-9]{1,4})*
知识点:
-
{n}
匹配前面的表达式指定 n 次 -
{n,}
匹配前面的表达式不少于 n 次 -
{n,m}
n <= m 匹配前面的表达式至少大于 M 次 ,不能小于 n 次
匹配参数
?wd=a&rsv_spt=1&issp=1&rsv_bp=0&ie=utf-8&tn=baiduhome_pg&inputT=1236
规则:/[a-zA-Z0-9&%_./-~-]*
知识点:
-
\-~
匹配ascii码里面的从\到~的字符
最终表达式:(((http|ftp|https)://)?)([a-zA-Z0-9.-])(:[0-9]{1,4})/[a-zA-Z0-9&%./-~-]*