84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
遇到一个很奇怪的问题,无法匹配
其实我的本意是匹配网址的
/(http|https)(?=:\/\/)/.test('http://')/(http|https)(?=:\/\/)/.test('http://www.baidu.com')
上面的两个都能正确的匹配,但是为啥下面那个就不行了呢?
/(http|https)(?=:\/\/)123/.test('http://123')
请大家赐教
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
你不小心用到了零宽断言,其中问号(?)是匹配其后面内容前面的位置,举例来说,三个单词(going thing learning)如果你想要匹配出(go th learn),而不需要 ing 时,才会用到零宽断言,正则是这样的:
/\w+(?=ing)/
所以,上面两句匹配到的是 http 而不是 http:// 或者 http://www.baidu.com
因此,你需要匹配 http://123,只要把零宽断言去掉即可
/(http|https)(:\/\/)123/
再如,你要匹配的仅是 http:// 或者 https:// 后面的内容,那么就要这样写:
/(?!http|https:\/\/)123/
希望有所帮助~ :)
零宽断言并不会包含匹配的字符串本身,所以上面的正则能匹配http://但是获取到的字符串里并不会包含://而是只包括http所以后面跟上123就匹配不上了。
你不小心用到了零宽断言,其中问号(?)是匹配其后面内容前面的位置,举例来说,三个单词(going thing learning)如果你想要匹配出(go th learn),而不需要 ing 时,才会用到零宽断言,正则是这样的:
/\w+(?=ing)/
所以,上面两句匹配到的是 http 而不是 http:// 或者 http://www.baidu.com
因此,你需要匹配 http://123,只要把零宽断言去掉即可
/(http|https)(:\/\/)123/
再如,你要匹配的仅是 http:// 或者 https:// 后面的内容,那么就要这样写:
/(?!http|https:\/\/)123/
希望有所帮助~ :)
零宽断言并不会包含匹配的字符串本身,所以上面的正则能匹配http://但是获取到的字符串里并不会包含://而是只包括http所以后面跟上123就匹配不上了。