'adsaaa'.replace(/a(?=d)/g,'c') // "cdsaaa" 非獲取性匹配,只將后面有d的a替換成c 'adsaaa'.replace(/a(?:d)/g,'c') // "csaaa" 此時等同於/ad/,將ad替換成c 'adsaaa'.replace(/a(?!d)/g,'c') // "adsccc" 將后面不是d的a替換成c 'adsaaa'.match(/a(?=d)/g) // ["a"] 'adsaaa'.match(/a(?:d)/g) // ["ad"] 'adsaaa'.match(/a(?!d)/g) // ["a", "a", "a"]
其中?:的用處主要是在有|的時候,很好用,例如a(?:d|r)匹配的就是ad或者ar
(?<=pattern),?<!pattern)這兩個js里現在都用不了
