遇到一個(gè)很奇怪的問(wèn)題,無(wú)法匹配
其實(shí)我的本意是匹配網(wǎng)址的
/(http|https)(?=:\/\/)/.test('http://')
/(http|https)(?=:\/\/)/.test('http://www.baidu.com')
上面的兩個(gè)都能正確的匹配,但是為啥下面那個(gè)就不行了呢?
/(http|https)(?=:\/\/)123/.test('http://123')
請(qǐng)大家賜教
擁有18年軟件開(kāi)發(fā)和IT教學(xué)經(jīng)驗(yàn)。曾任多家上市公司技術(shù)總監(jiān)、架構(gòu)師、項(xiàng)目經(jīng)理、高級(jí)軟件工程師等職務(wù)。 網(wǎng)絡(luò)人氣名人講師,...
你不小心用到了零寬斷言,其中問(wèn)號(hào)(?)是匹配其后面內(nèi)容前面的位置,舉例來(lái)說(shuō),三個(gè)單詞(going thing learning)如果你想要匹配出(go th learn),而不需要 ing 時(shí),才會(huì)用到零寬斷言,正則是這樣的:
/\w+(?=ing)/
所以,上面兩句匹配到的是 http 而不是 http:// 或者 http://www.baidu.com
因此,你需要匹配 http://123,只要把零寬斷言去掉即可
/(http|https)(:\/\/)123/
再如,你要匹配的僅是 http:// 或者 https:// 后面的內(nèi)容,那么就要這樣寫(xiě):
/(?!http|https:\/\/)123/
希望有所幫助~ :)
零寬斷言并不會(huì)包含匹配的字符串本身,所以上面的正則能匹配http://但是獲取到的字符串里并不會(huì)包含://而是只包括http所以后面跟上123就匹配不上了。