본관은 덕수(德水). 자는 정지(淨之), 호는 두곡(杜谷). 목천현령 장일(張逸)의 증손으로, 할아버지는 형조판서 장운익(張雲翼)이고, 아버지는 대제학(大提學) 장유(張維)이며, 어머니는 김상용(金尙容)의 딸이다. 효종 비 인선왕후(仁宣王后)의 오빠이다.
인조 때 공신의 아들이라 하여 음보로 영희전참봉(永禧殿參奉)에 보직되었으며, 세자익위사위수를 거쳐 1648년(인조 26) 김화현감을 지냈다. 효종 때 공조정랑·배천군수를 역임하였으며, 현종 때 충훈부도사(忠勳府都事)를 지냈다.
1662년(현종 3) 철원부사로 있을 때 증광문과에 병과로 급제하고, 성균관직강·사헌부지평·장령·부교리·헌납·교리·수찬·사간·우부승지·병조참지 등을 지냈다. 병조참판으로 아버지의 작위를 승습하여 풍양군(豊陽君)에 봉하여진 뒤 대사간·도승지·대사헌·공조판서·예조판서·우참찬 등을 역임하였다.
1674년 숙종이 즉위한 뒤 좌참찬·판의금부사·지경연춘추관사(知經筵春秋館事) 등을 역임하였다. 1677년(숙종 3) 한성부판윤으로 있을 때 외척 김우명(金佑明)의 무소(誣訴)로 송시열(宋時烈)이 거제부에 안치되자 이에 대한 철회를 간청하였으나 숙종은 허락하지 않았다.
그 뒤 사헌부집의 이상(李翔)이 소를 올려 신원(伸寃)하여줄 것을 청하다가 관직을 삭탈당하자, 이상의 관직삭탈명령을 환수해줄 것을 주청하다가 척신으로서 사(私)를 앞세우고 공(公)을 뒤로 한다는 이유로 파직되었다.
그 뒤에도 여러 차례 송시열의 신원을 간청하는 상소를 하였으나 용납되지 않자 고향에 돌아가 두문불출하였다. 시호는 정장(正莊)이다.