这个检测url的函数,又需要打补丁了。这次碰到2个问题,一个是新的后缀域名.institute,一个是url中的$符号不识别,一并解决了。

第一个问题以为比较好解决,此时直奔上次添加的xyz的地方,并把它加到了这里|xyz|institute|y,结果在线测试的时候,发现只能匹配到in就停止了,发现正则里面有这一段(?:info|int|i[delmnoqrst]),这应该是针对i开头的可选组,而它可以匹配到in,再之后就不匹配了……于是修改为(?:info|int|institute|i[delmnoqrst]),问题解决

第二个问题,在于结尾的特殊符号里缺少$,且结尾匹配中多了$,将
(\/(?:(?:[a-zA-Z0-9\;\/\?\:\@\&\=\#\~\-\.\+\!\*\'\(\)\,\_])|(?:\%[a-fA-F0-9]{2}))*)?(?:\b|$)

改成下面就解决了。

(\/(?:(?:[a-zA-Z0-9\;\/\?\:\@\&\=\#\~\-\.\+\!\*\'\(\)\,\_$])|(?:\%[a-fA-F0-9]{2}))*)?(?:\b|)

不过不明白为什么$不需要转义?它不是代表字符串的结尾吗?这里暂留一个疑问。

最后推荐这个正则在线测试网站,直观、迅速、支持多语言

http://regex101.com